Python属性上的map函数

时间:2015-01-27 17:18:43

标签: python string io map-function

我正在阅读文件

with open('file.html', 'r') as lines:
    for _ in range(19):
        line = lines.readline()
    line = line.replace('textA', '')
    line = line.replace('textB', '')
    line = line.replace('textC', '')
    line = line.replace('textD', '')

总共我有8行替换。我希望有更多的pythonic方法来做到这一点。

有没有聪明的方法来做到这一点。也许以某种方式使用filtermap

2 个答案:

答案 0 :(得分:4)

您可以使用regular expression

import re
from itertools import islice

pattern = re.compile(r'textA|textB|textC|textD')

with open('file.html', 'r') as lines:
    for line in islice(lines, 18, 19):
        line = pattern.sub('', line)

我保持pattern故意冗长;大概你真正的替代品都不是以text开头的;否则你可以使用r'text[A-D]'作为模式。

我使用itertools.islice()跳过前18行,只处理第19行。

答案 1 :(得分:1)

在您的示例中,我同意regexps,但可以更简单地完成:

deletions = ['textA', 'textB', 'textC', 'textD']

for s in deletions:
    line = line.replace(s, '')