簡體   English   中英

如何將制表符分隔文件讀入不等長行的 Python?

[英]How to read a tab delimited file into Python with rows of unequal length?

我有一個文本文件,它是測量結果。 當 object 不在要測量的正確位置時,它無法進行全套測量,這會導致文本文件中的行長度不等。

如何在 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)

您可以在手冊中閱讀有關loadtxt function 的更多信息。

使用 pandas 應該可以解決問題:

import pandas as pd
pd.read_csv('data.csv', sep='\t').to_numpy()

output:

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

它還可以輕松地與 pandas 一起使用,將 header 保留為列:

import pandas as pd
data = pd.read_csv(file_to_read, sep='\t')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM