我想用“ NONE”代替字符串“ <75%”。 我已经编写了此函数,但它不匹配:(
replacements = {'toot': 'titi-',
'<75%': 'NONE'}
def replace(match):
return replacements[match.group(0)]
def clean75Case(text_page):
return re.sub('|'.join(r'\b%s\b' % re.escape(s) for s in replacements),
replace, text_page)
if __name__ == '__main__':
print(clean75Case("toot iiii <75%"))
答案 0 :(得分:1)
如评论中所述,问题是\b
仅匹配单词和非单词字符之间的边界。来自the docs:
\ b
匹配空字符串,但仅在单词的开头或结尾。 单词定义为单词字符序列。注意 正式地,\ b被定义为\ w和\ W之间的边界 字符(反之亦然),或者\ w与该字符的开头/结尾之间 字符串
在您输入的字符串中,空格字符()和小于字符(
<
)都是非单词字符。因此\b
与它们之间的空白不匹配。
要解决此问题的另一种方法,请考虑使用split()
将字符串拆分为单词,并将每个单词与替换模式进行比较,如下所示:
replacements = {'toot': 'titi-',
'<75%': 'NONE'}
def clean75Case(text_page):
words = text_page.split()
return ' '.join(replacements.get(w, w) for w in words)
if __name__ == '__main__':
print(clean75Case("toot iiii <75%"))