在Python中将文本文件拆分为列和行
我有个新手问题。需要帮助把一个文本文件分成列和行。假设我有一个这样的文件:
1 2 3 4
2 3 4 5
我想把它放进一个叫做 values = [[]]
的二维列表里。
我能把它分成行,这段代码可以正常工作:
values = map(int, line.split(','))
但我不知道怎么把同样的操作应用到列上,文档里的说明让我看不懂。
谢谢!
5 个回答
1
首先,你需要通过某种方法把数据导入到你的程序里。这里有一个例子:
f = open(tetxfile, 'r')
buffer = f.read()
f.close()
接下来,把这个数据缓冲区解析成一个表格(注意:strip()这个函数是用来去掉末尾的空格的):
table = [map(int, row.split()) for row in buffer.strip().split("\n")]
>>> print table
[[1, 2, 3, 4], [2, 3, 4, 5]]
如果你想要的是有序对,那就把这个表格转置一下:
transpose = zip(*table)
>>> print transpose
[(1, 2), (2, 3), (3, 4), (4, 5)]
1
import csv
import itertools
values = []
with open('text.file') as file_object:
for line in csv.reader(file_object, delimiter=' '):
values.append(map(int, line))
print "rows:", values
print "columns"
for column in itertools.izip(*values):
print column
输出结果是:
rows: [[1, 2, 3, 4], [2, 3, 4, 5]]
columns:
(1, 2)
(2, 3)
(3, 4)
(4, 5)
6
f = open(filename,'rt')
a = [[int(token) for token in line.split()] for line in f.readlines()[::2]]
在你上面的示例文件中,每一行数据之间都有一个空行。我考虑到了这一点,但如果你不想在数据中有这个额外的空行,可以去掉::2
这个部分。
补充:我添加了转换为整数的部分 - 你也可以使用map
,不过我觉得把列表推导和map
混在一起看起来不太好。