首页 > 解决方案 > 从名称列表中解析全名

问题描述

我正在使用名称解析器从名称列表中提取全名。

from namesparser import HumanNames
names = HumanNames('Randy Heimerman, James Durham, Nate Green')
print(names.human_names[0])

Namesparser 在大多数情况下都能正常工作,但上面的例子已经挂了。我相信这是因为名称“Randy”包含“and”,namesparser 将其视为分隔符。

当我将 Randy 的名字移到字符串的末尾时,会打印出正确的名字 (James Durham)。但是,如果我尝试打印其他两个名称中的任何一个,则会返回错误的字符串。

关于如何解决这个问题的任何想法?

标签: pythonparsing

解决方案


我认为您应该使用逗号,作为分隔符。

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/ ,其中它需要一个由单数名称组成的字符串,以上仍然可以正常工作。


推荐阅读