读取列表中的文件内容

Read file content in list

提问人:clodia 提问时间:10/28/2023 最后编辑:clodia 更新时间:10/28/2023 访问量:73

问:

我有这样的文件:

1
2
3
4
O
5
6
7
8

如何读取列表中的数字作为输出,如下所示:[12345678]

a=[]
with open(filename, 'r') as input:
   for line in input:       
        if 'ONE' in line:
            break
        a.append(line)
print(' '.join(a))
Python 列表 文件

评论


答:

1赞 Barmar 10/28/2023 #1

读取文件时需要删除换行符。您可以使用 来执行此操作。strip()

当该行为 时,不要跳出循环,这将阻止读取文件的其余部分。ONE

的测试不适用于 或其他非数字行。用。ONETWO.isnumeric()

当您 时,您应该使用空字符串作为分隔符,而不是空格。.join()

最后,你需要调用将连接的字符串转换为整数,并将其放入其中以获得列表。int()[]

with open(filename, 'r') as f:
    a = [line.strip() for line in f if line.strip().isnumeric()]
   
print([int(''.join(a))])

不要用作变量名称,它会用该名称替换内置函数。input

评论

0赞 clodia 10/28/2023
我可以在不使用 strip() 的情况下读取文件时删除换行符吗?
0赞 Barmar 10/28/2023
你可以使用f.read().splitlines()
0赞 clodia 10/28/2023
感谢您的代码。你能检查一下我的更新代码吗?为什么我不能打印任何东西?
0赞 Barmar 10/28/2023
x.isnumeric()永远不会是真的,因为以换行符结尾。您需要使用xx.strip().isnumeric()
0赞 Barmar 10/28/2023
为什么附加新代码而不是 .并且意味着它将跳过 的许多元素。这与原始代码尝试执行的操作完全不同,并且不会产生所需的结果。ix[i]i += int(x[i])x