我正在尝试将书中的名称与欧洲风格的名称相匹配。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]))
这产生了我想要的结果,但它非常难看。有更好的解决方案吗?