带有姓氏前缀的大写专有名称的简单方法

Simple way to Capital Case Proper Names with Surname Prefixes

我希望从与姓名大小写不一致的数据源中导入姓名:

我的第一个方法是使用 title()

name_object = {
      "first_name": row['First Name'].title(),
      "last_name": row['Last Name'].title(),
      "mi": row['MI'].title()
    }

但是当然(我的爱尔兰祖先在他们的坟墓里打滚)这打破了麦金莱、德桑蒂斯等名字...

this post 中,有人使用 capitalize() 推出了他们自己的 title() 版本,但似乎可以消除以 "prefix" 开头的名称之间的歧义,例如 [=35] =] 或 "Di" 以及仅以这些字母 (Diaz) 开头的人,与真正鼓励人们在初始数据输入中使用一致的方法相比,意义不大。

是否有一种我没有想到的相对简单的自动化方法?

一个实用的解决方案是将基于 title() 的简单修复应用于几乎肯定是错误的情况,例如全部大写或全部小写,但不要混淆像 McKinley 这样的混合大小写名称。这将修复很多错误数据,但不是全部。

没有直接的方法来处理这些前缀。消除不同用法歧义所需的信息未包含在文本本身中。

根本问题是您需要太多的文化数据来区分 "D'Arc" 和 "Darc"。两个名字都是法语;您需要的不仅仅是名称的文本。跨世纪的语言之间也存在类似的问题,处理变体拼写和转录错误等