我发现了一些与此主题相关的问题。但是,我还没有找到一个解决方案,该解决方案带来了一个关于如何使用正则表达式拆分连接单词(西班牙语)的特定想法,例如使用正则表达式。
我使用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
它分裂了几个项目,但没有全部。
是否有更好的正则表达式模式来分割这些词?
任何解决问题的建议都是适用的。感谢
答案 0 :(得分:1)
尝试使用$ bash sim2darray.sh
The simulated 5x5 2D array:
[[ 0 1 2 3 4 ]
[ 5 6 7 8 9 ]
[ 10 11 12 13 14 ]
[ 15 16 17 18 19 ]
[ 20 21 22 23 24 ]]
并替换为(?<=[A-Za-z])(?=[A-Z][a-z])
或拆分。
这将检测大写或小写与大写或小写之间的\n
。这似乎是逻辑分隔符。
<强>输入强>
zero-width
MASCULINO|Fecha de Nacimiento|Lugar de Nacimiento
CASADO|Nivel Educativo
表示匹配的零宽度。
<强>输出强>
|
<强> Regex101 Demo 强>
正如Wiktor在评论中提到的那样
您不能将re.split与匹配正则表达式的空字符串一起使用。如果需要拆分,请使用PyPi正则表达式模块。
re.sub中没有此类错误,它用作解决方法:使用re.sub将未使用的字符插入到字符串中,然后使用此字符重新插入re.split。只需选择一些肯定不在输入中的字符(通常是控制字符,或未使用的Unicode范围中的字符)。
在匹配的零宽度中替换MASCULINO
Fecha de Nacimiento
Lugar de Nacimiento
CASADO
Nivel Educativo
并在~
上拆分将为您提供一系列结果。
Python代码:
~
<强> Ideone Demo 强>
答案 1 :(得分:1)