我是python的新手。我想从文本文件中读取一个2D整数数组,文件中每行一行,数字用逗号分隔。这有效:
s = f.read()
ss = s.splitlines()
mx = []
for i in range(0,len(ss)):
mx.append([])
for s1 in ss[i].split(','):
mx[i].append(int(s1))
有更简单的方法吗?
答案 0 :(得分:4)
有一个用于读取逗号分隔文件的内置模块(csv
):
import csv
mx = [map(int, row) for row in csv.reader(open(filename))]
另外,如果您打算使用此数组进行数学运算,您可能会发现安装和使用numpy
很有用:
import numpy
mx = numpy.loadtxt(filename, delimiter=',', dtype=int)
mx
现在将是array
而不是列表列表。
答案 1 :(得分:3)
使用嵌套列表推导:
with open(filename) as f:
mx = [[int(x) for x in line.split(',')] for line in f]
或使用map
列出理解:
mx = [map(int, line.split(',')) for line in f]
请注意,在Python 3中,您需要围绕list()
进行额外的map
调用。
如果NumPy可用:
>>> import numpy as np
>>> mx = np.loadtxt(filename, delimiter=',', dtype=int).tolist()