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