【发布时间】:2010-06-25 23:47:48
【问题描述】:
对于以空格/制表符分隔的输入文件,例如:
1 2 3
4 5 6
7 8 9
如何读取行并拆分整数,然后保存到列表或元组中?谢谢。
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
【问题讨论】:
对于以空格/制表符分隔的输入文件,例如:
1 2 3
4 5 6
7 8 9
如何读取行并拆分整数,然后保存到列表或元组中?谢谢。
data = [[1,2,3], [4,5,6], [7,8,9]]
data = [(1,2,3), (4,5,6), (7,8,9)]
【问题讨论】:
一种方法,假设子列表在不同的行上:
with open("filename.txt", 'r') as f:
data = [map(int, line.split()) for line in f]
请注意,with 声明直到 Python 2.6 才正式发布。如果您使用的是早期版本,则需要这样做
from __future__ import with_statement
【讨论】:
如果您发现自己在处理矩阵或数字表格,我可以建议使用 numpy 包吗?
import numpy as np
data = np.loadtxt(input_filename)
【讨论】:
tuples = [tuple(int(s) for s in line.split()) for line in open("file.txt").readlines()]
我喜欢Jeff's map(int, line.split()),而不是内部生成器。
【讨论】:
str.split返回一个列表)。基本上它所做的就是打开文件,读入它的行,然后遍历它们(for tup in ...)并在空白处分割每一个。
你的意思是,像这样?
更新
只需将每个字符串转换为 int
string = """1 2 3
4 5 6
7 8 9"""
data = []
for line in string.split("\n"): #split by new line
data.append( map( int, line.split(" ") ) ) # split by spaces and add
print( data )
输出:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
哒哒哒!!!
【讨论】:
def getInts(ln):
return [int(word) for word in ln.split()]
f = open('myfile.dat')
dat = [getInts(ln) for ln in f]
【讨论】: