如何垂直读取文件?因此,例如文件将包含以下内容:
1234
4567
7890
获取[147, 258, 369 479]
这是用的
rows = [line.split() for line in f]
columns=zip(*rows)
print(columns)
并获得以下内容
zip object
我应该怎么做才能解决这个问题?这样我得到了理想的结果
答案 0 :(得分:0)
看起来你正在使用Python 3,其中zip
返回一个迭代器。要查看值,您需要使用迭代器,例如使用list
构造函数:
columns = list(zip(*rows))
要获取单个变量中的各个列,您可以将其解压缩:
col1, col2, ... = zip(*rows)
如果文件确实只有一列,则没有理由首先调用split
。只需将这些行读入列表:
col = [int(line) for line in f] # or float(line)...
答案 1 :(得分:0)
在Python 3中zip
返回一个zip
对象,对于迭代而非用于打印非常有用。修复很简单:
print(list(columns))
答案 2 :(得分: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]
答案 3 :(得分: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']
如果您想将“列”作为生成器,则只需更改该行:
columns = (''.join(x) for x in z)