从名称列表解析全名

时间:2018-11-14 01:53:21

标签: python parsing

我正在使用namesparser从姓名列表中提取全名。

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

Namesparser在大多数情况下都能很好地工作,但上面的示例已被挂断。我相信是因为名称“ Randy”包含“ and”,而名称解析器将其视为分隔符。

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

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

1 个答案:

答案 0 :(得分:0)

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

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/,其中它包含由单数名称组成的字符串,则上面的代码仍然可以正常工作。