修复机器人的对话词库错误(带有丰富情感的文字简略版)

修复机器人的对话词库错误
题目描述
基于人工智能技术的智能陪伴机器人的语言词库被黑客的病毒感染了,感染方式是在单词中的某个字母被增加了两次,例如“hello”变成了“h(三个"e")llo”。空格字符被替换为长度不固定的数字乱码,请修复它。
输入格式
输入一行字符串(字符串中无空格)。这一行是被感染的字符串。【输出格式】
输出一行对应的正确字符串。
【样例输入】(测试数据不包含本样例)
h(三个“e”)llo
【样例输出】
hello
此题本人思维被局限了,请教一下

1、替换所有连续数字为一个空格;
2、删除连续三个相同字母多余的两个。


  • 代码运行效果截屏图片

    img

  • python 代码

#!/usr/bin/python

def clear(s):
    ''' 清除污染字符 '''
    s2 = s
    s = [i for i in s if not i.isdigit()] # 去除字符串中的数字。
    
    k = 0
    while k <= len(s)-2:
        if s[k] == s[k+1] == s[k+2]:
            s.pop(k+1)
            s.pop(k+1) # 剔除k+1后,k+2就变k+1了。
        else:
            k += 1

    print(f"\n{s2} -> {''.join(s)}")

if __name__ == '__main__':
    s1 = 'heeel56832974o'
    s2 = 'be309863efff6793'
    s3 = 'G56789o456oooddd'
    
    for i in (s1, s2, s3):
        clear(i)


  • 上面的代码对清除污染乱码数字理解错误,修改代码后——

    img

#!/usr/bin/python

def clear(s):
    ''' 清除污染字符 '''
    s2 = s
    s = list(s)
    
    k = 0
    while 1: # 去除字符串中的数字。
        
        if s[k].isdigit() and s[k+1].isdigit():
            s.pop(k)
            k -= 1
        elif s[k].isdigit() and not s[k+1].isdigit():
            s.insert(k, ' ')
            s.pop(k+1)

        if s[k+1] == s[-1]:
            break

        k += 1

###############

    k = 0
    while k <= len(s)-2:
        if s[k] == s[k+1] == s[k+2]:
            s.pop(k+1)
            s.pop(k+1) # 剔除k+1后,k+2就变k+1了。
        else:
            k += 1

    print(f"\n字符串“{s2}” ->\n{'':~^41}\n{'清除污染后:':>12}{''.join(s)}")

if __name__ == '__main__':
    s1 = 'Hooow55098aerrr567894youuu?'
    s2 = 'Heeellooo547690worrrlll.'
    s3 = 'GGGooddd'
    
    for i in (s1, s2, s3):
        clear(i)