我有一个看起来像这样的文本文件:
line 1
line 2
line 3
line 4
line 1
line 2
line 3
line 4
(etc)
每个line 1
我想执行一个特定的操作,并且每次line 2
执行不同的操作,等等。整个文档中包含行重复的模式(包括空白),所以目前我只是有一个计数器,在每个空行和一堆if
语句重置:
if counter == 1:
this(line)
elif counter == 2:
that(line)
elif etc
我的问题是,有更高效,更Pythonic的方式吗?
谢谢!
答案 0 :(得分:4)
您可以尝试查找功能列表:
line_processors = [
lambda ln: print("line 1 of paragraph:", ln),
lambda ln: print("line 2 of paragraph:", ln),
lambda ln: print("line 3 of paragraph:", ln),
lambda ln: print("line 4 of paragraph:", ln),
lambda ln: print("blank line:", ln),
]
with open("myfile.txt") as f:
for i, line in enumerate(f):
line_processors[i % 5](line)
答案 1 :(得分:0)
您可以阅读所有文件行并创建行列表。之后,您只需要使用列表索引。
with open(fname) as f:
content = f.readlines()
content = [x.strip() for x in content]
# this(content[0])
# that(content[1])