在utf-8文本中用Python替换3个和更多相同字符序列的最快方法是什么?我需要用2个字符替换3个以上相同字符的序列.即
aaa -> aa
bbbb -> bb
abbbcd -> abbcd
124xyyyz3 -> 124xyyz3
Run Code Online (Sandbox Code Playgroud)
jam*_*lak 12
>>> import re
>>> re.sub(r'(\w)\1{2,}', r'\1\1', 'aaa')
'aa'
>>> re.sub(r'(\w)\1{2,}', r'\1\1', 'bbbb')
'bb'
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式:
import re
re.sub(r'(.)\1{2,}', r'\1\1', 'bbbbbaaacc')
Run Code Online (Sandbox Code Playgroud)
模式捕获任何字符后跟相同的字符重复两次或更多次并匹配此子字符串.替换只用两个捕获的字符替换匹配的子字符串.Dot不会替换重复的新行,使用(.|\n)或re.DOTALL标记.
它也适用于Unicode:
re.sub(r'(.)\1{2,}', r'\1\1', u'???')
Run Code Online (Sandbox Code Playgroud)
如果你有一个x包含utf-8文本的字符串变量,请使用x.decode('utf-8').