我想要替换多次出现的所有字符,我使用Python的re.sub,我的正则表达式看起来像data=re.sub('(.)\1+','##',data)
,但没有发生任何事情......
这是我的文字:
文字
※※※※※※※※※※※※※※※※※第一章※※※※※※※※※※※※※※※※※
这是开始......
答案 0 :(得分:3)
您需要在此处使用原始字符串,1
被解释为八进制,然后在字符串中使用其等效整数的ASCII值。
>>> '\1'
'\x01'
>>> chr(01)
'\x01'
>>> '\101'
'A'
>>> chr(0101)
'A'
使用原始字符串来解决此问题:
>>> '(.)\1+'
'(.)\x01+'
>>> r'(.)\1+' #Note the `r`
'(.)\\1+'
答案 1 :(得分:1)
使用原始字符串,因此正则表达式引擎解释反斜杠而不是Python解析器。只需在字符串前加r
:
data=re.sub(r'(.)\1+', '##', data)
^ this r is the important bit
否则,\1
被解释为字符值1而不是反向引用。