Python的属性映射函数

Python's map function on attributes

我正在读取一个文件

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

您可以使用 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行。

在你的例子中我同意正则表达式,但它可以更简单地完成:

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

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