我正在尝试替换文本中西里尔字母的整体外观:
# -*- coding: utf-8 -*-
import re
S = u"раз Два трИ".lower()
print re.sub(ur"\bдва\b", u"четыре", S, re.U)
打印“раз два три”,而预期“раз четыре три”。
同时 search() 和 findall() 效果很好:
print re.search(ur"\bдва\b", S, re.U).group(0)
print re.findall(ur"\bдва\b", S, re.U)
所以 re.sub() 的唯一问题
拉丁字符效果很好:
S = u"one Two threE".lower()
print re.sub(ur"\btwo\b", u"four", S, re.U)
如果我尝试以下方式,它会吞下空格(并且看起来很丑:
print re.sub(u"[^а-яё\d]два[^а-яё\d]", u"четыре", S)
尝试保留空格不起作用:
print re.sub(u"(?:[^а-яё\d])(два)(?:[^а-яё\d])", u"четыре", S)
替换也无济于事:
S = u"раз Два трИ".lower()
print S
S.replace(u"два", u"четыре")
print S
打印两次“раздватри”。