2024-10-01 02:20:32 发布
网友
在Python中,替换utf-8文本中3个或更多相同字符序列的最快方法是什么?我需要用2个字符替换3个或更多相同字符的序列。 一、 e
aaa -> aa bbbb -> bb abbbcd -> abbcd 124xyyyz3 -> 124xyyz3
>>> import re >>> re.sub(r'(\w)\1{2,}', r'\1\1', 'aaa') 'aa' >>> re.sub(r'(\w)\1{2,}', r'\1\1', 'bbbb') 'bb'
可以使用正则表达式:
import re re.sub(r'(.)\1{2,}', r'\1\1', 'bbbbbaaacc')
模式捕获跟在同一字符后面重复两次或更多次的任何字符,并匹配此子字符串。替换只将匹配的子字符串替换为捕获的字符中的两个。点不会替换重复的新行,请使用(.|\n)或re.DOTALL标志。在
(.|\n)
re.DOTALL
它也适用于Unicode:
如果您有一个包含utf-8文本的字符串变量x,请使用x.decode('utf-8')。在
x
x.decode('utf-8')
虽然对于这种特定的情况,我会使用正则表达式,但您也可以在任意序列上使用此泛型to运算符,例如:
from itertools import groupby, chain, islice s = 'abaaaaaabbbbbbbbcdcddddde' print ''.join(chain.from_iterable(islice(g, 2) for k, g in groupby(s))) # abaabbcdcdde
可以使用正则表达式:
模式捕获跟在同一字符后面重复两次或更多次的任何字符,并匹配此子字符串。替换只将匹配的子字符串替换为捕获的字符中的两个。点不会替换重复的新行,请使用
(.|\n)
或re.DOTALL
标志。在它也适用于Unicode:
^{pr2}$如果您有一个包含utf-8文本的字符串变量
x
,请使用x.decode('utf-8')
。在虽然对于这种特定的情况,我会使用正则表达式,但您也可以在任意序列上使用此泛型to运算符,例如:
相关问题 更多 >
编程相关推荐