我正在尝试使用 python 中的正则表达式删除带有单个重复字符的单词,例如:

good => good
gggggggg => g

到目前为止我尝试过的是以下
re.sub(r'([a-z])\1+', r'\1', 'ffffffbbbbbbbqqq')

上述解决方案的问题是它更改了 good to god,我只想删除带有单个重复字符的单词。

最佳答案

这里更好的方法是使用 set

def modify(s):

    #Create a set from the string
    c = set(s)

    #If you have only one character in the set, convert set to string
    if len(c) == 1:
        return ''.join(c)
    #Else return original string
    else:
        return s

print(modify('good'))
print(modify('gggggggg'))

如果你想使用正则表达式,在我们的正则表达式中通过 ^$ 标记字符串的开始和结束(灵感来自@bobblebubble 评论)
import re

def modify(s):

    #Create the sub string with a regex which only matches if a single character is repeated
    #Marking the start and end of string as well
    out = re.sub(r'^([a-z])\1+$', r'\1', s)
    return out

print(modify('good'))
print(modify('gggggggg'))

输出将是
good
g

关于python - 我们如何删除重复单个字符的单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56455494/

10-11 16:00