python - 从名称列表中解析全名
问题描述
我正在使用名称解析器从名称列表中提取全名。
from namesparser import HumanNames
names = HumanNames('Randy Heimerman, James Durham, Nate Green')
print(names.human_names[0])
Namesparser 在大多数情况下都能正常工作,但上面的例子已经挂了。我相信这是因为名称“Randy”包含“and”,namesparser 将其视为分隔符。
当我将 Randy 的名字移到字符串的末尾时,会打印出正确的名字 (James Durham)。但是,如果我尝试打印其他两个名称中的任何一个,则会返回错误的字符串。
关于如何解决这个问题的任何想法?
解决方案
我认为您应该使用逗号,
作为分隔符。
def print_names( name_string ):
return (name.strip() for name in name_string.split(","))
这样做是在逗号上拆分您的字符串,然后去除尾随和前导空格等......在返回名称数组之前。
现在您有了名称生成器,您可以将其传递给其他事物,例如:
humans = [HumanName(name) for name in print_names(name_string)]
但是话又说回来,我不知道您的类 HumanNames / HumanName 的真正含义,并且您没有放置类定义。
如果您正在查看此模块:https ://pypi.org/project/nameparser/ ,其中它需要一个由单数名称组成的字符串,以上仍然可以正常工作。
推荐阅读
- php - 为什么我必须在通过部署机器人安装作曲家后运行 php artisan passport:install 在服务器上?
- c++ - Windows 10 和 Linux Muparser 名称允许的字符集不同?
- python - 当一个包指定一个范围而另一个包没有指定范围时,依赖关系解析如何与 pip 一起工作?
- javascript - 使用 foreach 循环的 SetState 不起作用
- javascript - 有什么方法可以访问/控制台 json 中的项目?
- file - 如何在系统间缓存中使用 %Net.MailMessage 添加两个或多个文件附件?
- java - 恢复 2 个字符串之间的错误字符
- android - 将搜索栏添加到媒体播放器或迁移到 Exoplayer
- php - OneToMany 关系不列出元素
- c# - C#/SqlServer 内存泄漏