Python的属性映射函数

2024-10-05 14:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读一个文件

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行替换。我想有一个更具Python的方式来做这件事。你知道吗

有没有一个聪明的方法可以做到这一点。也许是用filtermap的方法?你知道吗


Tags: 文件方法inforreadlinehtmlaswith
2条回答

您可以使用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]'作为模式。你知道吗

我使用^{}跳过前18行,只处理第19行。你知道吗

在您的示例中,我同意regexps,但可以做得更简单:

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

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

相关问题 更多 >