【问题标题】:Simple way to Capital Case Proper Names with Surname Prefixes用姓氏前缀大写专有名称的简单方法
【发布时间】:2019-04-23 23:14:59
【问题描述】:

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

  • 约翰·布朗
  • 凯西 V 西蒙斯
  • 胡安·维拉斯克斯

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

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

但当然(我的爱尔兰祖先正在他们的坟墓里翻滚)这会破坏像 McKinley、DeSantis 等这样的名字......

this post 中,有人使用capitalize() 推出了他们自己的title() 版本,但似乎可以区分以“de”或“Di”等“前缀”开头的名称和仅以“de”开头的名称这些信件 (Diaz) 比真正鼓励人们在初始数据输入中使用一致的方法更没有意义。

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

【问题讨论】:

标签: python capitalization


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多