簡體   English   中英

如何在python中過濾三重和雙簡單引號?

[英]How to filter triple and double simple quotes in python?

我正在嘗試清除文本,以保留最多字母,數字和最常用的字母標記。 例如,有時我會用'''words'''或“ words”,所以我想去除那些簡單的引號。 到目前為止,我選擇使用兩個正則表達式:

import re
tqre=re.compile('\'\'\'[^\']*\'\'\'') #for triple quotes
dqre=re.compile('\'\'[^\']*\'\'') #for "double" quotes

然后剝離每個比賽:

res1=tqre.sub(self.quoteExtract,text)
res2=dqre.sub(self.quoteExtract,res1)

哪里:

def quoteExtract(self,match):
    return match.group().strip("'")

看起來三重引號效果很好,但是我有很多雙簡單引號通過,似乎它們沒有被抓住。 是因為它們不是真正簡單的引號而是另一個相似的符號? 還有另一種處理方式嗎?

* ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.* ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.* ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.* ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903. 。找不到正則表達式。

它沒有通過,因為雙引號之間有一個' (l'arménien),但是您正在嘗試匹配[^']*

最好使用惰性量詞來表達這種正則表達式:

tqre = re.compile("'''.*?'''")
dqre = re.compile("''.*?''")

在這里.*? 表示匹配任何字符串,如果有多個匹配項,則選擇最短的一個。

  • . =除換行符外的任何字符,
  • * =零或更多,
  • ? 星號=非貪婪匹配之后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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