我有一个包含以下内容的文本文件:
5
1 2 3 4 5
我希望将内容读入python中的列表。我面临的问题是我想忽略文件第一行的数字5。数字5表示它下面的元素数量为5.相反,我只想将1,2,3,4,5附加到列表中。
[1,2,3,4,5]
我试过了:
file = open('text.txt','r')
textfile = file
lst = []
for line in textfile:
line = line.strip().split(',')
line[1] = int(line[1]) #convert 1,2,3,4,5 into integers
lst.append(line[1])
print(lst)
我得到的错误是"索引超出范围"。
答案 0 :(得分:2)
在循环之前添加行next(textfile)
。它将丢弃文件中的第一行。
接下来,您没有将该行转换为intereg数字。您只能转换第二个元素line[1]
。正确的转换方式是:
lst = [int(i) for i in line.split()]
或
lst = list(map(int, line.split()))
总结一下,你的完美"程序看起来像这样:
with open('text.txt') as infile:
next(infile)
for line in infile:
lst = [int(i) for i in line.split()]
print(lst)
答案 1 :(得分:0)
只想为@DyZ答案添加一个小修正
如果我理解正确,您需要列表[1,2,3,4,5]
而不是['1,2,3,4,5']
with open('text.txt') as infile:
next(infile)
for line in infile:
lst = [int(i) for i in line.split()]
print(lst)
如果您将line.split(',')
与int
一起使用,则会导致ValueError - invalid literal for int()
答案 2 :(得分:0)
文本文件:
5
1 2 3 4 5
3 4 5 6 7
代码:
file = open('C:\\Users\\lenovo\\Desktop\\text.txt','r')
for line in file.readlines()[1:3]:
lst=[int(i) for i in line.strip().split()]
print(lst)
输出:
[1, 2, 3, 4, 5]
[3, 4, 5, 6, 7]
我的英语很差,无法用英语解释,希望你能理解( ^ __ ^ )
答案 3 :(得分:0)
您可以尝试这种方法:
with open('file','r') as f:
for line_no,line in enumerate(f):
if line_no%2==0:
pass
else:
print([int(int_) for int_ in line if int_.strip()!=''])
输出:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9]