如何过滤 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("'")
看起来它对三重引号很有效,但是我有很多双引号通过了,似乎它们没有被捕获。是因为它们不是真正简单的引号而是另一个相似的标志吗?还有其他方法可以处理它们吗?
Ex:在 * ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.
中找不到正则表达式。
它没有通过,因为双引号之间有一个 '
(l'arménien),但您正在尝试匹配 [^']*
。
这种正则表达式最好用 lazy quantifier:
表示
tqre = re.compile("'''.*?'''")
dqre = re.compile("''.*?''")
这里.*?
表示匹配任意字符串,当有多个匹配时,选择最短的一个。
.
= 除换行符外的任何字符,
*
= 零个或多个,
?
星号后=非贪心匹配
我正在尝试清理文本以保留最多的字母、数字和最常用的标点符号。例如,有时我有 '''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("'")
看起来它对三重引号很有效,但是我有很多双引号通过了,似乎它们没有被捕获。是因为它们不是真正简单的引号而是另一个相似的标志吗?还有其他方法可以处理它们吗?
Ex:在 * ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.
中找不到正则表达式。
它没有通过,因为双引号之间有一个 '
(l'arménien),但您正在尝试匹配 [^']*
。
这种正则表达式最好用 lazy quantifier:
表示tqre = re.compile("'''.*?'''")
dqre = re.compile("''.*?''")
这里.*?
表示匹配任意字符串,当有多个匹配时,选择最短的一个。
.
= 除换行符外的任何字符,*
= 零个或多个,?
星号后=非贪心匹配