如何将列数据从文本文件转换为Python中的列表?

时间:2015-03-22 18:59:58

标签: python

我有一个包含两列数据的文本文件,我希望将每个列作为列表读入Python。

例如:

       2500.3410      -0.60960758
       2505.5803       -1.3031826
       2510.8197      -0.64067196
       2516.0593       -1.0230898
       2521.2991      -0.20078891

我想创建两个列表,一个包含第1列的数据,另一列包含第2列,但我不知道如何告诉Python这样做。

E.g。

list1 = [2500.3410, 2505.5803, 2510.8197, 2516.0593, 2521.2991]      

我已经在shell中打开了文件,并且可以读取数据,如上所述,但是在创建列表时我感到困惑。

2 个答案:

答案 0 :(得分:0)

您可以在float

中使用zip功能和map
zip(*[map(float,line.split()) for line in open('in_file')])

演示:

>>> s="""       2500.3410      -0.60960758
...        2505.5803       -1.3031826
...        2510.8197      -0.64067196
...        2516.0593       -1.0230898
...        2521.2991      -0.20078891"""
>>> 
>>> [i.split() for i in s.split('\n')]
[['2500.3410', '-0.60960758'], ['2505.5803', '-1.3031826'], ['2510.8197', '-0.64067196'], ['2516.0593', '-1.0230898'], ['2521.2991', '-0.20078891']]
>>> zip(*[map(float,i.split()) for i in s.split('\n')])
[(2500.341, 2505.5803, 2510.8197, 2516.0593, 2521.2991), (-0.60960758, -1.3031826, -0.64067196, -1.0230898, -0.20078891)]

但请注意,zip返回元组列表,您可以使用map函数将结果转换为列表:

>>> map(list,zip(*[map(float,i.split()) for i in s.split('\n')]))
[[2500.341, 2505.5803, 2510.8197, 2516.0593, 2521.2991], [-0.60960758, -1.3031826, -0.64067196, -1.0230898, -0.20078891]]

答案 1 :(得分:0)

首先,您必须阅读Python中的文本文件, 对于一个实例,如果你有一个名为record.txt的文件包含数据集,

file <- open('record.txt')

现在你必须逐行阅读文件:

lst = [] 

将整个文件存储为列表列表,每个内部列表代表一个实例

for line in file:
    lst.append([ float(x) for x in line.split()])

现在您可以通过以下理解

将column1提取为列表,将列2提取为列表
column1 = [ x[0] for x in lst]
column2 = [ x[1] for x in lst]