如何将列数据解析为数组?

时间:2013-01-03 00:58:42

标签: python

我有一个文件如下:

1 99
2 33
3 90
4 25
5 89

我想将1,2,3,4,5解析到列表x99, 33, 90, 25, 89列表y,我该怎么做?

我不明白的部分是我可以读取但不知道如何解析两个列表,我想也许有更优雅的方式去除它除了按空格分割并添加words[0]xword[1]y

2 个答案:

答案 0 :(得分:5)

with open('number-file') as f:
    x,y = zip(*(map(int, line.split()) for line in f))

会得到你想要的东西。

with open('number-file') as f:

打开一个文件进行读取(并在代码完成后关闭它)。然后,您可以简单地迭代它。

(line.split() for line in f)

generator expression,每行产生两个字符串。对于每一行,map(int, line.split())将这些字符串转换为整数。到目前为止的结果看起来像

[[1, 99], [2, 33], [3, 90], [4, 25], [5, 89]]

使用zip,我们可以在结果列表xy中加入子列表的第n个元素。

从技术上讲,x和y现在是tuples(不可变)而不是列表(可以扩展和更改)。在大多数情况下,元组也应该可以工作,但如果你真的需要列表,只需添加

即可
x,y = list(x), list(y)

答案 1 :(得分:1)

left_column = []
right_column = []
with open('your_file') as f:
  reader = csv.reader(f, delimiter=' ')

  for line in csv_reader:
    left_column.append(line[0])
    right_column.append(line[1])