我是一名新的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()
但是因为我不知道我会有多少行,是否还有另一种创建单个列表的方法?
答案 0 :(得分:25)
不要创建单独的列表;创建一个列表列表:
results = []
with open('inputfile.txt') as inputfile:
for line in inputfile:
results.append(line.strip().split(','))
或者更好的是,使用csv
module:
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))
答案 1 :(得分:4)
创建列表列表:
with open("/path/to/file") as file:
lines = []
for line in file:
# The rstrip method gets rid of the "\n" at the end of each line
lines.append(line.rstrip().split(","))
答案 2 :(得分:2)
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]
答案 3 :(得分:-1)
lines=[]
with open('file') as file:
lines.append(file.readline())