用regex重复匹配大写姓氏

2024-09-30 06:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把书中的名字和欧洲风格的名字搭配起来。OCR的工作一般,所以姓氏大写是很重要的。但是,也可以使用多个姓氏,如Luc ASSELIN DE WILLIENCOURT或Marie Sophie DUFAU-RICHET。你知道吗

我提出了以下解决方案,但我相信有更好的方法,我想知道是否有人可以做得更好…我打破了几行正则表达式,以便于阅读。。。 你知道吗

names = regex.compile("[\p{Lu}][\p{Ll}]+
                     (?:[\p{Pd}][\p{Lu}][\p{Ll}]+ | )
                     (?:[\p{Lu}][\p{Lu}'\p{Pd}]*)
                     (?: [\p{Lu}][\p{Lu}'\p{Pd}]*){0,5}", flag=regex.UNICODE)

ntest = ['Michèle DUBROCARD magistrate', ' Marie-Sara durur Marie-  Sara.Durur@justice.gouv.fr Tél. : 01 70 22 41 71', 
'Jean-Pierre KELCHE, général d\'armée','ÉriC LE CLERCQ DE LANNOY', 'ÉriC LE CLERCQ DE LANNOY, fucker',
 'Éric LE CLERCQ DE LANNOY shlaphead', "john smith proctologist", 'John smith     Proctolog', 'john smith, proctolog', "N...", "GHESTEM", "Bill linebreaker,"
"his honorable Baron VAN BULL and her hc Marie-Eunice DELAGARDE"]

for i in range(0, len(ntest)):
    print(regex.findall(names,ntest[i]))

这产生了我想要的结果,但它相当丑陋。有更好的解决办法吗?你知道吗


Tags: lenamesde名字regexpdsmithll
1条回答
网友
1楼 · 发布于 2024-09-30 06:27:07

我不能说我理解你的正则表达式为什么工作,所以我的第一个建议是使用重复详细信息稍微标记并记录正则表达式(http://docs.python.org/library/re.html#re.VERBOSE)。你知道吗

我不知道这是复制粘贴错误,但是当你在多行上分解正则表达式时,你应该使用三个引号。你知道吗

哦,使用原始字符串(r""" ... """)。你知道吗

相关问题 更多 >

    热门问题