gpt4 book ai didi

python - 如何有选择地将文件中的行放入列表

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:20 25 4
gpt4 key购买 nike

我正在尝试获取格式如下的文件:

# Comments
# More comments

1,foo,bar,1
1,foo,bar,2
21,foo,bar,8

end_of_file

并将其处理成如下列表:

listing = [[1,'foo','bar',1], [1,'foo','bar',2], [21,'foo','bar',8]]

目前,我正在运行类似于:

listing = [] 
with open('foo_file.cfg','r') as f:
for line in f:
if line[0].isDigit:
listing.append(line) # i've also tried listing.append([line])

显然,我最终会得到:

[['1,foo,bar,1'],['1,foo,bar,2'],['21,foo,bar,8']]

我知道我可以用逗号分隔 line,重建一个新列表,然后将列表附加到 listing。 如果是的话,我绝对愿意这样做正确的方法,但我认为它们可能更清洁。我知道 csv 模块会将整个文件读入正确的格式,但我不确定它将如何选择性地删除某些数据,例如评论。

最佳答案

这是 csv 模块的一种方式,它避免了明确说明一些重复性任务(逗号分隔符、换行符等)。

from io import StringIO
import csv

mystr = StringIO("""1,foo,bar,1
1,foo,bar,2
21,foo,bar,8""")

res = []

# replace mystr with open('file.csv', 'r')
with mystr as f:
reader = filter(None, csv.reader(f)) # ignore empty lines
for line in reader:
if line[0].isdigit():
res.append([int(line[0]), line[1], line[2], int(line[3])])

print(res)

[[1, 'foo', 'bar', 1],
[1, 'foo', 'bar', 2],
[21, 'foo', 'bar', 8]]

关于python - 如何有选择地将文件中的行放入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com