我是 Python 的新用户。
我有一个 txt 文件,内容如下
3,1,3,2,3
3,2,2,3,2
2,1,3,3,2,2
1,2,2,3,3,1
3,2,1,2,2,3
但可能行数更少或更多。
我想以列表的形式导入每一行。
我知道你可以这样做:
filename = 'MyFile.txt'
fin=open(filename,'r')
L1list = fin.readline()
L2list = fin.readline()
L3list = fin.readline()
但由于我不知道会有多少行,有没有其他方法来创建单个列表?
不要创建单独的列表,而是创建一个列表的列表:
results = []
with open('inputfile.txt') as inputfile:
for line in inputfile:
results.append(line.strip().split(','))
或者最好使用 csv
模块:
import csv
results = []
with open('inputfile.txt', newline='') as inputfile:
for row in csv.reader(inputfile):
results.append(row)
列表或字典是**高级的结构,可用于跟踪从文件中读取的任意数量的内容。
需要注意的是,这两种循环方式都可以让你单独处理数据行,而无需将文件的所有内容读入内存;无需使用 results.append()
而只需在此处处理该行即可。
为完整起见,下面是一次性将 CSV 文件读入列表的简洁版本:
import csv
with open('inputfile.txt', newline='') as inputfile:
results = list(csv.reader(inputfile))
with open('path/to/file') as infile: # try open('...', 'rb') as well
answer = [line.strip().split(',') for line in infile]
如果您希望数字为 int
s:
with open('path/to/file') as infile:
answer = [[int(i) for i in line.strip().split(',')] for line in infile]