【发布时间】:2016-04-13 17:31:22
【问题描述】:
我发现了一些与此主题相关的问题。但是,我还没有找到一个解决方案,它带来了一个具体的想法,比如如何使用正则表达式将连接的单词(西班牙语)拆分为大写和小写。
我正在使用 PyPDF2 从多个 pdf 中提取文本。信息始终保持相同的顺序。
运行 PyPDF2 代码后,我得到如下项目:
'MASCULINOFecha de NacimientoLugar de Nacimiento'
'CASADONivel Educativo'
在这两种情况下,项目都是 pdf 内容中的关键词。我试图得到的输出应该是这样的(使用之前的例子):
'MASCULINO'
'Fecha de Nacimiento'
'Lugar de Nacimiento'
'CASADO'
'Nivel Educativo'
我尝试使用正则表达式模块来拆分特定模式。到目前为止,这是我的代码:
pdfFile = open('example.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)
for page in range(0, pdfReader.getNumPages()):
text = pdfReader.getPage(page).extractText()
for line in text.split(':'):
pattern = re.compile(r'([A-Z][a-z]+(?=\s[A-Z])(?:\s[A-Z][a-z]+)+)')
result = re.findall(pattern, line)
print result
它拆分了一些项目,但不是全部。
有没有更好的正则表达式模式来拆分这些单词?
任何解决问题的建议都值得赞赏。谢谢
【问题讨论】:
-
输入的原始格式是什么?
-
@noob 我编辑了这个问题。最后,我编写了我正在使用的代码。
-
编辑:
\B(?=[A-Z][a-z])上的拆分怎么样。它在一个大写字母后跟一个前面没有空格的小写字母之前拆分。 -
@ClasG:足够接近。但是您也必须将
a-z添加到积极的后视镜中。 -
已更改 - 再试一次
标签: python regex python-2.7 pdf text-mining