1

我正在阅读一个文件

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 行替换。我想有一个更蟒蛇的方式来做到这一点。

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

4

2 回答 2

4

您可以使用正则表达式

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 行。

于 2015-01-27T17:21:38.267 回答
1

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

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

for s in deletions:
    line = line.replace(s, '')
于 2015-01-27T17:45:44.267 回答