【问题标题】:How to find acronyms in a pdf file如何在pdf文件中查找首字母缩略词
【发布时间】:2013-07-17 15:15:40
【问题描述】:

在我的论文中,我需要添加一个首字母缩略词列表。我想知道它是如何编程的。我找到了不错的实用程序pdfgrep,它也可以获取正则表达式。我是这样使用的:

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)

【问题讨论】:

  • [A-Z][A-Z]+?还是[A-Z]{2,}?你的缩写是什么?是S.H.I.E.L.D.?是ToC
  • 这是个好问题。我决定这将是至少 2 个大写字母的序列。但是,正如你提到的,它不会赶上 ToC。

标签: python regex grep acronym


【解决方案1】:

首字母缩略词(我相信您的情况)仅是大写字母。那么你所要添加的就是

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

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

【讨论】:

    【解决方案2】:

    正如 m.buettner 所问,答案很大程度上取决于您认为首字母缩写词是什么。

    作为一般建议,您可以使用[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 等。

    【讨论】:

      【解决方案3】:

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

      我也强烈考虑使用PyEnchant,因为它可以让您查看您的可疑首字母缩写词是否在指定的字典中。

      【讨论】:

        猜你喜欢
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多