Python:对文档的每一行执行不同的操作

时间:2017-05-06 04:37:14

标签: python

我有一个看起来像这样的文本文件:

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的方式吗?

谢谢!

2 个答案:

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