我希望我的程序从.txt文件中读取,该文件的行中的数据排列如下:
NUM NUM NAME NAME NAME
。我如何将其行读入列表,以便每行成为列表的元素,每个元素的前两个值为int,其他三个为字符串?
因此,文件的第一行:1 23 Joe Main Sto
应该变为lst[0] = [1, 23, "Joe", "Main", "Sto"]
。
我已经有了这个,但它不能完美运行,我确信必须有更好的方法:
read = open("info.txt", "r")
line = read.readlines()
text = []
for item in line:
fullline = item.split(" ")
text.append(fullline)
答案 0 :(得分:4)
使用不带参数的str.split()
将空格折叠并自动删除,然后将int()
应用于前两个元素:
with open("info.txt", "r") as read:
lines = []
for item in read:
row = item.split()
row[:2] = map(int, row[:2])
lines.append(row)
注意这里我们将直接循环到文件对象上,不需要先将所有行都读入内存。
答案 1 :(得分:0)
with open(file) as f:
text = [map(int, l.split()[:2]) + l.split()[2:] for l in f]