我打算在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),我只想保留其中一个。
谢谢。
答案 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组。