在我的论文中,我需要添加一个首字母缩略词列表。我想知道它是如何编程的。我找到了很好的实用程序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)
答案 0 :(得分:1)
视为首字母缩略词(我相信你的情况)仅限首都。然后你需要添加的是
PATTERN = '[A-Z][A-Z]+'
将检查至少2个大写字母。
答案 1 :(得分:1)
答案很大程度上取决于你认为什么是首字母缩略词,正如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等。
答案 2 :(得分:0)
我会选择([A-Z][a-zA-Z0-9+\.\&]*[A-Z0-9])\W
这应该通过允许任何小写组合来捕捉WW P&amp; L,P + P等。
我还强烈考虑使用PyEnchant,因为它可以让你看看你的疑似首字母缩略词是否在指定的字典中。