在Python中删除字符串中的连续重复字符

时间:2019-04-28 14:50:53

标签: python regex python-regex

我打算在python中实现this。作为简要说明,我有一个像11122_11255_12_223_12这样的字符串,我想在python中使用正则表达式来得到一个像12_125_12_23_12

这样的输出。

this帖子中获得帮助,我用python写了一些代码,但是不能正常工作,这是我在python中的代码:

import re
regex = r"(.)\1+"
test_str = "11122_11255_12_223_12"
subst = "$1"
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)

但似乎subst="$1"在python中不起作用(它在javascript中起作用)
正如我上面提到的,我有一些像11122_11255_12_223_12这样的字符串,我希望得到的输出是这样的:12_125_12_23_12,这意味着下划线之间是一个数字,并且对于每个数字,如果有两个或多个彼此相邻的数字(例如:223有两个2),我只想保留其中一个。 谢谢。

2 个答案:

答案 0 :(得分:4)

您也可以使用itertools.groupby

from itertools import groupby

string = "11122_11255_12_223_12"

''.join(key for key, group in groupby(string))

输出:

'12_125_12_23_12'

答案 1 :(得分:2)

>>> import re
>>> regex = r"(.)\1+"
>>> test_str = "11122_11255_12_223_12"
>>> re.sub(regex, r'\1', test_str, 0, re.MULTILINE)
'12_125_12_23_12'

用于反向引用的Python语法使用反斜杠(\),而不是美元。没有更多内容可以添加到module documentation

  

反向引用(例如\ 6)被替换为与   模式中的第6组。