一个简单的python模块,用于将人名解析为各个组件。

nameparser的Python项目详细描述


Build StatusPyPIPyPI versionDocumentation

一个简单的python(3.2+&2.6+)模块,用于将人名解析为 单个组件。

  • hn.title
  • hn.first
  • hn.中间
  • hn.last
  • hn.后缀
  • hn.昵称
  • hn.姓(中间+最后)

支持的名称结构

支持的名称结构通常是“title first middle last suffix”,其中所有部分 是可选的。也支持逗号分隔格式,如“最后,第一”。

  1. title firstname“昵称”中间中间的姓氏后缀
  2. 姓氏[后缀],名字(昵称)中间名[,]后缀[,后缀]
  3. 名字m姓[后缀],后缀[后缀][,后缀]

用逗号上的字符串拆分然后用空格实例化humanname类, 根据字符串中的位置对名称部分进行分类,并与已知名称进行匹配 比如标题和后缀。

它正确地处理了一些常见的连词和姓氏的特殊前缀。 就像“德尔”。标题和连词可以链接在一起以处理复杂的 像“助理国务卿”这样的头衔。它还可以尝试纠正大写 所有的名字都是大写或小写的。

它试图用一种简单的、基于规则的方法做出最好的猜测。 它的主要用例是英语,不太可能对语言有用 不符合支持的名称结构的。不是完美的,但是 让你走得很远。

安装

pip install nameparser

如果您想试用github的最新代码,可以 使用下面的命令使用pip安装。

pip install -egit+git://github.com/derek73/python-nameparser.git#egg=nameparser

如果您需要处理姓名列表,请查看 namesparser,一个 向这个处理字符串中多个名称的模块致意。

快速启动示例

>>> from nameparser import HumanName
>>> name = HumanName("Dr. Juan Q. Xavier de la Vega III (Doc Vega)")
>>> name
<HumanName : [
    title: 'Dr.'
    first: 'Juan'
    middle: 'Q. Xavier'
    last: 'de la Vega'
    suffix: 'III'
    nickname: 'Doc Vega'
]>
>>> name.last
'de la Vega'
>>> name.as_dict()
{'last': 'de la Vega', 'suffix': 'III', 'title': 'Dr.', 'middle': 'Q. Xavier', 'nickname': 'Doc Vega', 'first': 'Juan'}
>>> str(name)
'Dr. Juan Q. Xavier de la Vega III (Doc Vega)'
>>> name.string_format = "{first} {last}"
>>> str(name)
'Juan de la Vega'

解析器不会试图更正输入中的错误。大部分都是白色的 根据它们在字符串中的位置将它们放置在桶中。这也意味着 “title”和“suffix”的区别在于位置,而不是语义。“博士”是一个头衔 当它出现在名字的前面时,当它出现在后面时,它会有一个后缀。(“名义前” “后名义”可能是更好的名字。)

>>> name = HumanName("1 & 2, 3 4 5, Mr.")
>>> name
<HumanName : [
    title: ''
    first: '3'
    middle: '4 5'
    last: '1 & 2'
    suffix: 'Mr.'
    nickname: ''
]>

定制

您的项目可能需要对数据集进行一些调整。你可以 通过标题、前缀等的customizing the configured pre-defined sets,或者通过将humanname类子类化,在您自己的前处理或后处理中执行此操作。见 full documentation了解更多信息。

Full documentation

贡献

如果您遇到您认为应该在默认配置中的name piece,则 可能是对的。Start a New Issue我们可以添加它们。

请让我知道这个图书馆是否有办法 在项目中更容易使用。阅读CONTRIBUTING.md了解更多信息 在运行测试和参与项目时。

github项目

https://github.com/derek73/python-nameparser

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何解决Java泛型通配符/抽象歧义问题?   javacom。苹果eawt我到底应该安装什么   在屏幕旋转后,java片段的目标不在片段管理器中   java测试数据库连接超时   java当子类构造函数的超类具有较少的参数时,如何向其添加更多参数?   部署为jetty中部署为服务的两个应用程序设置不同的java系统属性   发送带有唯一附件的批量电子邮件(服务、java或api)   java如何在Android上使用AlarmManager在所需日期显示Toast   java有没有办法在eclipse中过滤工作区引用(Ctrl+Shift+G),这样就不会看到“潜在匹配”?   java设置textview数组的上下文   java为什么滚动页面时不使用鼠标滚动光标轨迹?   java在运行时更改拓扑属性   java自管理单调递增密钥或系统的时间戳   直接向扬声器发送音频