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 的方式来做到这一点。
有没有聪明的方法来做到这一点。也许以某种方式使用 filter
和 map
?
您可以使用 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, '')
我正在读取一个文件
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 的方式来做到这一点。
有没有聪明的方法来做到这一点。也许以某种方式使用 filter
和 map
?
您可以使用 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, '')