将两行分隔的文件内容读入lis

2024-03-28 18:38:04 发布

您现在位置: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)

我得到的错误是“索引超出范围”。你知道吗


Tags: 文件textintxt元素内容列表for
3条回答

只想在@DyZ answer中添加一个小的修正 如果我理解正确的话,您希望列表[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()

您可以尝试以下方法:

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]

在循环前面添加行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)

相关问题 更多 >