一个简单的python模块,用于将人名解析为各个组件。
nameparser的Python项目详细描述
一个简单的python(3.2+&2.6+)模块,用于将人名解析为 单个组件。
- hn.title
- hn.first
- hn.中间
- hn.last
- hn.后缀
- hn.昵称
- hn.姓(中间+最后)
支持的名称结构
支持的名称结构通常是“title first middle last suffix”,其中所有部分 是可选的。也支持逗号分隔格式,如“最后,第一”。
- title firstname“昵称”中间中间的姓氏后缀
- 姓氏[后缀],名字(昵称)中间名[,]后缀[,后缀]
- 名字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项目