2014-01-23 25 views
0

如何垂直读取文件?因此,例如一个文件将包含以下内容:如何在python中获得所需的垂直列表?

1234 
4567 
7890 

获得[147, 258, 369 479]

这是用来

rows = [line.split() for line in f] 

columns=zip(*rows) 
print(columns) 

,并获得

zip object 

我应该做到以下几点要解决这个问题?以便我得到期望的结果

回答

0

看起来您正在使用Python 3,其中zip返回一个迭代器。要查看这些值,你需要使用迭代器,例如使用list构造:

columns = list(zip(*rows)) 

为了获得在各个变量单独列,可以解压它们:

col1, col2, ... = zip(*rows) 

如果该文件实际上只有一列,也没有理由骂split在第一个地方。简单地读线到一个列表:

col = [int(line) for line in f]  # or float(line)... 
+0

编辑是做了什么?我仍然看到四列... – mhlester

+0

@mhlester误读编辑,对不起 – user4815162342

0

在Python 3 zip返回一个zip对象,有用的迭代,但没有这么多的印刷。解决方法是容易的,但:

print(list(columns)) 
0

这里代码

lines = "1234 4567 7890" 
rows_iter = [iter(s) for s in lines.split()] 
cols_as_list = zip(*strs_iter) 
cols = [''.join(c) for c in cols_as_list] 
0

鉴于您的样本数据在一个名为 'foop.txt' 文件,在这里你去:

z = zip(*(l for l in open('foop.txt'))) 
columns = [''.join(x) for x in z] 
print columns 

结果:

['147', '258', '369', '470'] 

如果你想离开'colum ns'作为发生器,只需更改该行:

columns = (''.join(x) for x in z) 
相关问题