繁体   English   中英

读取 txt 文件并将单个列保存为列表

[英]Reading a txt file and saving individual columns as lists

我正在尝试读取 .txt 文件并将每列中的数据保存为列表。 文件中的每一列都包含一个变量,稍后我将使用它来绘制图形。 我已尝试查找执行此操作的最佳方法,大多数答案建议打开文件,阅读它,然后将列拆分或另存为列表。 .txt中的数据如下——

0   1.644231726
0.00025 1.651333945
0.0005  1.669593478
0.00075 1.695214575
0.001   1.725409504

分隔符是空格''或制表符'\\t' 我使用以下代码尝试将列附加到我的变量中 -

import csv

with open('./rvt.txt') as file:
    readfile = csv.reader(file, delimiter='\t')
    time = []
    rim = []
    for line in readfile:
        t = line[0]
        r = line[1]
        time.append(t)
        rim.append(r)

print(time, rim)

但是,当我尝试使用print(time, rim)打印列表、时间和边缘print(time, rim) ,我收到以下错误消息 -

r = line[1]
IndexError: list index out of range

但是,如果我注释掉r=line[1]rim.append(r)部分,我只能打印“时间”。 我该如何解决这个问题? 先感谢您!

我建议如下:

import pandas as pd

df=pd.read_csv('./rvt.txt', sep='\t'), header=[a list with your column names])

然后您可以使用 list(your_column) 将您的列作为列表使用

问题在于分隔符。 数据集包含多个空格“ ”。

当您使用'\\t'并打印line您可以看到它没有用分隔符分隔该行。

例如:

['0   1.644231726']
['0.00025 1.651333945']
['0.0005  1.669593478']
['0.00075 1.695214575']
['0.001   1.725409504']

要获得所需的结果,您可以使用 (space) 作为分隔符并filter空值:

readfile = csv.reader(file, delimiter=" ")
time, rim = [], []
for line in readfile:
    line = list(filter(lambda x: len(x), line))
    t = line[0]
    r = line[1]

这是执行此操作的代码:

import csv

with open('./rvt.txt') as file:
    readfile = csv.reader(file, delimiter=” ”)
    time = []
    rim = []
    for line in readfile:
        t = line[0]
        r = line[1]
        time.append(t)
        rim.append(r)
print(time, rim)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM