Python 读取txt文件并将各个列保存为列表
我试图读取一个.txt文件,并将每列中的数据保存为列表。文件中的每一列都包含一个变量,稍后我将使用该变量绘制图形。我已经尝试过寻找最好的方法来实现这一点,大多数答案都建议打开文件,阅读它,然后拆分列或将列保存为列表。txt中的数据如下所示-Python 读取txt文件并将各个列保存为列表,python,python-3.x,list,Python,Python 3.x,List,我试图读取一个.txt文件,并将每列中的数据保存为列表。文件中的每一列都包含一个变量,稍后我将使用该变量绘制图形。我已经尝试过寻找最好的方法来实现这一点,大多数答案都建议打开文件,阅读它,然后拆分列或将列保存为列表。txt中的数据如下所示- 0 1.644231726 0.00025 1.651333945 0.0005 1.669593478 0.00075 1.695214575 0.001 1.725409504 分隔符是空格'或制表符'\t'。我使用以下代码尝试将这些列附加到
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)
打印列表、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])
然后,您可以使用列表(您的列)将列作为列表使用。问题在于分隔符。数据集包含多个空格“” 当您使用
'\t'
和
打印行
您可以看到它没有用分隔符分隔行
例如:
要获得所需的结果,您可以使用
(空格)作为分隔符,并筛选空值:
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)
也许您应该使用pandas?很可能文本文件中的一行不包含时间
和rim
的两个值,因此行[1]
不存在,并弹出此错误。您还可以打印行号,找出产生此错误的行,并检查其中的文件。无论如何,pandas
似乎是一个更好的选择,因为它将更具容错性。这将在r中给出不正确的值。正如我在回答中所解释的,行之间的空间不一致,值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)