簡體   English   中英

如何在Python中使用RE將重復字符壓縮為單個字符?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM