读取由两行分隔的文件内容到列表

时间:2018-04-02 01:57:53

标签: python

我有一个包含以下内容的文本文件:

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)

我得到的错误是"索引超出范围"。

4 个答案:

答案 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]