【问题标题】:Python Regex - remove all duplicate (character and digit) [duplicate]Python Regex - 删除所有重复(字符和数字)[重复]
【发布时间】:2020-09-03 08:59:37
【问题描述】:

我对 Regex 有点陌生,一直在尝试构建代码来删除重复项。

结果应该是这样的 'abcd1"

我的代码如下:

import re

text = 'aaaaabbbcccddd111'

while re.search(r'([a-z])(.*)\1', text):
    text = re.sub(r'([a-z])(.*)\1', r'\1\2', text)

print(text)

但是,它不会删除“1”,只会删除 a-z 字符。

我应该包括什么来完成这项工作?

谢谢!

【问题讨论】:

  • 使用re.sub(r'(.)\1*', r'\1', text)
  • 将匹配的数字添加到字符类([a-z0-9])\1+并替换为r'\1' regex101.com/r/sYO49h/1

标签: python-3.x regex duplicates


【解决方案1】:

将号码组也包含到re.sub() 并避免第二组:

import re

text = 'aaaaabbbcccddd111'
text = re.sub(r'([a-z0-9])(.*)\1', r'\1', text)
#or
text = re.sub(r'([a-z]|[0-9])(.*)\1', r'\1', text)

print(text)

给予:

'abcd1'

对于具有多组外观的字符串:

re.sub(r'(.)\1+', r'\1', 'abcddbca123321')

【讨论】:

  • 非常感谢您的帮助!该代码有效,但不适用于此文本:'abcddbca123321'
猜你喜欢
  • 1970-01-01
  • 2017-02-15
  • 2019-08-10
  • 2017-12-30
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
相关资源
最近更新 更多