如何将制表符分隔文件读入 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