Python 如何在pdf文件中查找首字母缩略词

Python 如何在pdf文件中查找首字母缩略词,python,regex,grep,acronym,Python,Regex,Grep,Acronym,在我的论文中,我需要添加一个缩略词列表。我想知道如何编程。我发现了尼斯实用程序,它也可以得到正则表达式。我是这样使用它的: pdfgrep "([A-Z]+)" thesis.pdf 这是我为此找到的最好的正则表达式,尽管它也有单大写字母。有谁有更好的解决方案吗? 我编写了一个处理输出的Python代码: import subprocess import shlex import re FOLDER = 'full folder' THESIS = '%s/thesis.pdf'%(FOL

在我的论文中,我需要添加一个缩略词列表。我想知道如何编程。我发现了尼斯实用程序,它也可以得到正则表达式。我是这样使用它的:

pdfgrep "([A-Z]+)" thesis.pdf
这是我为此找到的最好的正则表达式,尽管它也有单大写字母。有谁有更好的解决方案吗? 我编写了一个处理输出的Python代码:

import subprocess 
import shlex
import re

FOLDER = 'full folder'
THESIS = '%s/thesis.pdf'%(FOLDER)
OUTPUT_FILE = '%s/acronymsInMyThesis.txt'%(FOLDER)
PATTERN = '([A-Z]+)'

def searchAcronymsInPDF():
    output = pdfSearch()
    acrs = []
    for reg in re.findall(PATTERN, output):
        reg.strip()
        if (len(reg)>1):
            acrs.append(reg)
    return set(acrs)

def pdfSearch():
    command = 'pdfgrep "%s" %s'%(PATTERN,THESIS)
    output = shellCall(command)
    return output

def shellCall(command):
    p = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
    out, _ = p.communicate()
    return out

if __name__ == '__main__':
    acrs = searchAcronymsInPDF()
    print(acrs)
视为首字母缩略词(我相信你的情况)仅为大写。那么你要补充的就是

PATTERN='[A-Z][A-Z]+'

这将检查至少2个大写字母。

首字母缩写(我相信在你的情况下)仅为大写字母。那么你要补充的就是

PATTERN='[A-Z][A-Z]+'


这将检查至少2个大写字母。

< P>答案很大程度上取决于你认为什么缩写词,正如Buttnter问的。

作为一般建议,您可以使用
[a-Z]{2,}|([a-Z].){2,}[a-Z]?
,这将匹配以下内容:

AS | ASD | etc. (two or more)
A.S. | A.S.D. | etc. (two or more letters+period, ending with period)
A.S.D | A.S.D.F | etc. (two or more letters+period, ending without period)
更新:


另一个建议(给定“TOC”示例)是<代码> [AZZ] [AZ-Z] *[AZZ] ,它与大写开始和结束的字符串相匹配:TOC、TOC、WOW、WOW、TOOTS等。

< P>答案很大程度上取决于你认为缩写词是什么,正如Buttnter问的。

作为一般建议,您可以使用
[a-Z]{2,}|([a-Z].){2,}[a-Z]?
,这将匹配以下内容:

AS | ASD | etc. (two or more)
A.S. | A.S.D. | etc. (two or more letters+period, ending with period)
A.S.D | A.S.D.F | etc. (two or more letters+period, ending without period)
更新:

另一个建议(给出“ToC”示例)是
[A-Z][A-zA-Z]*[A-Z]
,它匹配以大写开头和结尾的字符串:ToC、ToC、WOW、WOW、TOoTS等。

我会选择
([A-Z][A-zA-Z0-9+\\.\&]*[A-Z0-9])\W
这应该通过允许任何小写组合来捕捉WOW W8 p&L、p+p等

<>我也会强烈地考虑使用,因为它会让你看到你的首字母缩写词是否在指定的字典中。

我会去<代码>([AZ] [AZ-Z09+[\&] *[AZ-9])\W/<代码>应该通过允许小写的组合来捕获哇W8P&L,P+P等。


<>我也会强烈地考虑使用,因为它会让你看到你的首字母缩写词是否在指定的字典中。

<代码> [AZ] [AZZ+< /代码>?或者
[A-Z]{2,}
?你的首字母缩写是什么?是否为S.H.I.E.L.D.?是ToC吗?这是个好问题。我决定它至少由两个大写字母组成。但是,正如您所提到的,它不会捕获ToC。
[A-Z][A-Z]+
?或者
[A-Z]{2,}
?你的首字母缩写是什么?是否为S.H.I.E.L.D.?是ToC吗?这是个好问题。我决定它至少由两个大写字母组成。但是,正如你提到的,它不会赶上ToC。