[英]How can I compress repetitive characters to a single character using RE in Python?
我希望能够用单次出现替换字符串中所有连续出现的标点符号。 例如:
我想到的第一件事是:
for char in string.punctuation:
text = re.sub( "\\" + char + "+", char, text )
但是,由于这将在重复的过程中运行,我想知道是否有办法在单个RE中实现此目的,以使其运行更快。 你怎么看?
您可以尝试:
text = re.sub(r"([" + re.escape(string.punctuation) + r"])\1+", r"\1", text)
这使用re.escape()
来确保标点符号可以根据需要正确地转义。 \\1
引用引用括号()
的部分,这是匹配的第一个标点符号。 因此,这会将两个或多个重复标点字符的实例替换为同一单个字符。
re.sub(r'([!?.])\\1+', r'\\1', text)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.