如何使用python删除相邻重复的字母?

时间:2018-06-27 12:31:24

标签: python string

字符串为“你好,你好吗” 成为“你好,你好吗”

我尝试了这个正则表达式,

re.sub(r'(\w)\1{1,}', r'\1', st)

这在删除相邻的重复字母方面效果很好

,例如“ xcccc xcxcxcxc xxxxxcc”, 结果是“ xc xcxcxcxc xc”。

但是我要删除一个和两个不同的相邻重复字母。

例如“ xcccc xcxcxcxc xxxxxcc”,
结果必须是这样的“ xc xc xc”。

我希望这有助于理解我的问题并消除歧义。

2 个答案:

答案 0 :(得分:0)

使用正则表达式,您可以像执行以下操作:

import re
print (re.sub(r"(.+?)\1+", r"\1", 'hello how are you and huhuhu'))
print (re.sub(r"(.+?)\1+", r"\1", 'xcccc xcxcxcxc xxxxxcc'))

输出:

helo how are you and hu
xc xc xc

或:

def remove_repeats(string):
    for i in range(len(string)):
        for j in range(i + 1, len(string)):
            while string[i:j] == string[j:j + j - i]:
                string = string[:j] + string[j + j - i:]
    return string


print(remove_repeats('hello how are you and huhuhu'))
print(remove_repeats('xcccc xcxcxcxc xxxxxcc'))

输出:

helo how are you and hu
xc xc xc

答案 1 :(得分:-1)

一种方法:

def removeDups(string):
    result = string[0]
    for i in range(1,len(string)):
        if string[i] != string[i-1]:
            result += string[i]
    return result

removeDups('hello how are you and huhuhu')

# 'helo how are you and huhuhu'

removeDups('thisss isss aaaa llloongg ssstttringgg')

# 'this is a long string'