如何将制表符分隔文件读入 Python 行长度不等?
How to read a tab delimited file into Python with rows of unequal length?
我有一个文本文件,它是测量结果。当对象不在正确的测量位置时,它无法进行全套测量,这会在文本文件中给出不等长的行。
如何在 Python 中阅读?我必须用空格填充文本文件中的空格吗?
数据是什么样的:
我试过的代码:
from numpy import loadtxt
lines = loadtxt(file_to_read, comments="#", delimiter="\t", unpack=False)
但是报错:
ValueError: could not convert string to float: 'Height\tLength\tVolume\tSpeed\tWeight'
然后我尝试了:
file_to_read = ('/Users/path/to/file//dummy_data.txt')
file_object = open(file_to_read, 'r')
file_object.read()
print(file_object)
但它没有返回任何内容,我想查看数据以查看其格式是否正确。
错误消息表明您正在尝试导入 header 行。使用skiprows
参数到loadtxt
跳过这一行:
lines = loadtxt(file_to_read, comments="#", delimiter="\t", skiprows=1, unpack=False)
您可以在 the manual 中阅读有关 loadtxt
函数的更多信息。
它也很容易与 pandas 一起使用,将 header 保留为列:
import pandas as pd
data = pd.read_csv(file_to_read, sep='\t')
使用 pandas 应该可以解决问题:
import pandas as pd
pd.read_csv('data.csv', sep='\t').to_numpy()
输出:
array([[1. , 0.5, 0.2],
[0.1, nan, nan],
[nan, 0.1, 5. ]])
其中 data.csv
包含:
A B C
1 .5 .2
.1
.1 5
我有一个文本文件,它是测量结果。当对象不在正确的测量位置时,它无法进行全套测量,这会在文本文件中给出不等长的行。
如何在 Python 中阅读?我必须用空格填充文本文件中的空格吗?
数据是什么样的:
我试过的代码:
from numpy import loadtxt
lines = loadtxt(file_to_read, comments="#", delimiter="\t", unpack=False)
但是报错:
ValueError: could not convert string to float: 'Height\tLength\tVolume\tSpeed\tWeight'
然后我尝试了:
file_to_read = ('/Users/path/to/file//dummy_data.txt')
file_object = open(file_to_read, 'r')
file_object.read()
print(file_object)
但它没有返回任何内容,我想查看数据以查看其格式是否正确。
错误消息表明您正在尝试导入 header 行。使用skiprows
参数到loadtxt
跳过这一行:
lines = loadtxt(file_to_read, comments="#", delimiter="\t", skiprows=1, unpack=False)
您可以在 the manual 中阅读有关 loadtxt
函数的更多信息。
它也很容易与 pandas 一起使用,将 header 保留为列:
import pandas as pd
data = pd.read_csv(file_to_read, sep='\t')
使用 pandas 应该可以解决问题:
import pandas as pd
pd.read_csv('data.csv', sep='\t').to_numpy()
输出:
array([[1. , 0.5, 0.2],
[0.1, nan, nan],
[nan, 0.1, 5. ]])
其中 data.csv
包含:
A B C
1 .5 .2
.1
.1 5