【问题标题】:using Python to search for keywords in pdf [duplicate]使用Python在pdf中搜索关键字[重复]
【发布时间】:2014-05-10 16:09:37
【问题描述】:

我正在搜索 pdf 文件中的关键字,因此我尝试搜索 /AA 或 /Acroform,如下所示:

import re
l = "/Acroform "
s = "/Acroform is what I'm looking for"
if re.search (r"\b"+l.rstrip()+r"\b",s):
    print "yes"

为什么我没有得到“是”。我希望“/”成为我要查找的关键字的一部分(如果存在)。 任何人都可以帮助我吗?

【问题讨论】:

    标签: python regex pdf


    【解决方案1】:

    \b \w(单词)和\W(非单词)字符之间匹配,反之亦然,或者当\w字符位于字符串的边缘(开始或结束)。

    您的字符串以/ 正斜杠开头,一个非单词 字符,所以\W\b 永远不会在字符串的开头和 / 之间匹配。不要在这里使用\b,对单词字符使用明确的否定后视:

    re.search(r'(?<!\w){}\b'.format(re.escape(l)), s)
    

    (?&lt;!...) 语法定义了一个否定的look-behind;像 \b 它匹配字符串中的位置。这里它只会匹配前面的字符(如果有的话)是不是一个单词字符。

    我在这里使用字符串格式而不是串联,并使用re.escape() 来确保您正在搜索的字符串中的任何正则表达式元字符都被正确转义。

    演示:

    >>> import re
    >>> l = "/Acroform "
    >>> s = "/Acroform is what I'm looking for"
    >>> if re.search(r'(?<!\w){}\b'.format(re.escape(l)), s):
    ...     print 'Found'
    ... 
    Found
    

    【讨论】:

    • 它给了我“SyntaxError: invalid syntax”
    • @user3569815:你确定你复制的文本正确吗?它对我来说很好。
    • 是的,它确实有效,但是如果我有一组关键字,其中一些包含“/”,我尝试将上面的代码应用于我的代码,但它没有给我正确答案
    • @user3569815:我不知道你的组包含什么,但它通常可以在开始时使用和不使用斜线。最后的\b 可能会遇到类似的问题;使用(?!\w) 代替添加否定的前瞻。
    • PDF 文本在文件中并不总是线性的;另请参阅建议的欺骗目标。
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 2013-09-08
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多