带有姓氏前缀的大写专有名称的简单方法
Simple way to Capital Case Proper Names with Surname Prefixes
我希望从与姓名大小写不一致的数据源中导入姓名:
- 约翰·布朗
- 凯西·V·西蒙斯
- 胡安·委拉斯开兹
我的第一个方法是使用 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"。两个名字都是法语;您需要的不仅仅是名称的文本。跨世纪的语言之间也存在类似的问题,处理变体拼写和转录错误等
我希望从与姓名大小写不一致的数据源中导入姓名:
- 约翰·布朗
- 凯西·V·西蒙斯
- 胡安·委拉斯开兹
我的第一个方法是使用 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"。两个名字都是法语;您需要的不仅仅是名称的文本。跨世纪的语言之间也存在类似的问题,处理变体拼写和转录错误等