gpt4 book ai didi

python - 如何替换两个或多个重复的 :punct: using re in python?

转载 作者:行者123 更新时间:2023-12-04 01:10:07 26 4
gpt4 key购买 nike

我需要替换某些字符串上两个或多个重复的标点符号。

"asdasdasd - adasdasd asda ------- asda wadsda +-----+ wwww qqqqqq aaaaa"

"asdasdasd - adasdasd asda -  asda wadsda +- + wwww qqqqqq aaaaa"

我使用 regex101 应用程序创建了这个应用程序:

https://regex101.com/r/vdR5T1/1/

但是当我尝试使用 python 时:

import re
texto = "asdasdasd - adasdasd asda ------- asda wadsda +-----+ wwww qqqqqq aaaaa"
rx = re.compile(r'([[:punct:]])\1{2,}')
texto = rx.sub(' ', texto)
print(texto)

我遇到了这个错误:

FutureWarning: Possible nested set at position 2
rx = re.compile(r'([[:punct:]])\1{2,}')

如何使用 python 运行这个(或类似的)正则表达式?

最佳答案

Python re 不识别 POSIX 括号表达式,因此 [[:punct:]] 看起来像一个嵌套的字符类(因此出现警告消息)。您可以将其替换为包含所有标点符号的字符类,例如[!-/:-@[-`{-~]。请注意,您的正则表达式需要 3 个或更多相同字符(初始捕获组加上 2 个或更多重复),您只需要 + 而不是 {2,} 并且您需要替换为 \1 以在输出中获取重复字符一次:

import re
texto = "asdasdasd - adasdasd asda ------- asda wadsda +-----+ wwww -- qqqqqq aaaaa"
rx = re.compile(r'([!-/:-@[-`{-~])\1+')
texto = rx.sub(r'\1 ', texto)
print(texto)

输出:

asdasdasd - adasdasd asda -  asda wadsda +- + wwww -  qqqqqq aaaaa

关于python - 如何替换两个或多个重复的 :punct: using re in python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65136664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com