[英]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.