如何垂直读取文件?因此,例如一个文件将包含以下内容:如何在python中获得所需的垂直列表?
1234
4567
7890
获得[147, 258, 369 479]
这是用来
rows = [line.split() for line in f]
columns=zip(*rows)
print(columns)
,并获得
zip object
我应该做到以下几点要解决这个问题?以便我得到期望的结果
如何垂直读取文件?因此,例如一个文件将包含以下内容:如何在python中获得所需的垂直列表?
1234
4567
7890
获得[147, 258, 369 479]
这是用来
rows = [line.split() for line in f]
columns=zip(*rows)
print(columns)
,并获得
zip object
我应该做到以下几点要解决这个问题?以便我得到期望的结果
看起来您正在使用Python 3,其中zip
返回一个迭代器。要查看这些值,你需要使用迭代器,例如使用list
构造:
columns = list(zip(*rows))
为了获得在各个变量单独列,可以解压它们:
col1, col2, ... = zip(*rows)
如果该文件实际上只有一列,也没有理由骂split
在第一个地方。简单地读线到一个列表:
col = [int(line) for line in f] # or float(line)...
在Python 3 zip
返回一个zip
对象,有用的迭代,但没有这么多的印刷。解决方法是容易的,但:
print(list(columns))
这里代码
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]
鉴于您的样本数据在一个名为 '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)
编辑是做了什么?我仍然看到四列... – mhlester
@mhlester误读编辑,对不起 – user4815162342