【发布时间】:2019-04-18 19:14:29
【问题描述】:
我正在创建一个 Jupyter 笔记本,以使用我在 Sublime 中测试的正则表达式代码清理大量小说。 我的很多文本都包含“由 Google 数字化”的短语,因为我从那里获得了通过光学字符识别运行的 PDF。 我想删除所有包含短语“数字化”或更确切地说是“数字化”的句子,因为第一部分并不总是正确转录。
当我在 Sublimes 'replace function' 中使用这个短语时,我得到了我想要的结果:
^.*igitized.*$
但是,当我尝试在 Jupyter 笔记本中使用 re.sub 方法(该方法适用于其他一些短语)时,“Google 数字化”行未正确识别并被“无”替换。
text = re.sub(r'^.*igitized.*$', '', text)
我错过了什么?
【问题讨论】:
-
正则表达式看起来不错,如果
Digitized...从行首开始,是否会出现所有情况? -
您是否尝试过使用非贪婪量词?我会想象你的正则表达式字符串的开头, (^.*) 默认情况下会是贪婪的,并消耗它后面的所有内容。您可以尝试将字符串更改为
r'^.*?igitized.*?$'吗?问号告诉正则表达式,前一个量词是非贪婪的,应该匹配尽可能少的东西 - 所以一旦找到 igitized 它将停止消费字符 -
您是一次针对 1 行还是针对整个文件运行正则表达式?此正则表达式仅在您一次针对 1 行运行时才有效,您无法提供整个文件。