如何在Python中过滤三重和双重简单引号?

2024-04-26 03:22:36 发布

您现在位置: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.中找不到regex。你知道吗


Tags: 文本selfreformatch字母数字引号
1条回答
网友
1楼 · 发布于 2024-04-26 03:22:36

它不会通过,因为在双引号之间有一个'(l'arménien),但是您正在尝试匹配[^']*。你知道吗

这种正则表达式最好用lazy quantifier表示:

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

这里.*?表示匹配任何字符串,当有多个匹配项时,选择最短的一个。你知道吗

  • .=除新行以外的任何字符
  • *=零或更多
  • ?在star=非贪婪匹配之后

相关问题 更多 >