我正在寻找一种有效的方法来排除一个字符串,使得超过2个相同字符的所有序列在前2个之后被切断.
一些输入>输出示例是:
hellooooooooo -> helloo woooohhooooo -> woohhoo
我正在循环播放角色,但它有点慢.有没有人有其他解决方案(regexp或其他)
编辑:当前代码:
word_new = "" for i in range(0,len(word)-2): if not word[i] == word[i+1] == word[i+2]: word_new = word_new+word[i] for i in range(len(word)-2,len(word)): word_new = word_new + word[i]
解决方法
编辑:应用有用的评论后
import re def ReplaceThreeOrMore(s): # pattern to look for three or more repetitions of any character,including # newlines. pattern = re.compile(r"(.)\1{2,}",re.DOTALL) return pattern.sub(r"\1\1",s)
(这里的原始回复)
尝试这样的事情:
import re # look for a character followed by at least one repetition of itself. pattern = re.compile(r"(\w)\1+") # a function to perform the substitution we need: def repl(matchObj): char = matchObj.group(1) return "%s%s" % (char,char) >>> pattern.sub(repl,"Foooooooooootball") 'Football'