首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python将名称拆分为首名、中名和姓

使用Python将名称拆分为首名、中名和姓
EN

Stack Overflow用户
提问于 2020-10-26 11:03:38
回答 5查看 4.4K关注 0票数 3

因此,我基本上要求我有一个名称,我需要将它分成三个部分,并使用Python将其存储到三个不同的变量中。

例如:

Name=“约翰·韦恩·史密斯”

那么所需的输出应该是:

第一name=约翰

中间Name=韦恩

姓=史密斯

另外,我想检查一下,如果某个人的中间名不存在,那么它应该是空的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-10-26 11:07:34

使用拆分函数创建具有名称的列表,第一个是名称,第二个是您的姓氏,如果名称长度等于2时

代码语言:javascript
复制
names =Name.split()
if len(names) ==2 :
 print("there is no middle name")
 first_name = names[0]
 last_name = names[1]
 print(f" first name - {first_name}\n  middle name -  last name - {last_name}")
elif len(names) == 3:
 print("there is  middle name")
 first_name = names[0]
 middle_name = names[1]
 last_name = names[2]
 print(f" first name - {first_name}\n middle name - {middle_name} \nlast name - {last_name}")
票数 1
EN

Stack Overflow用户

发布于 2022-02-21 07:03:33

名称解析是解决您的问题的完美解决方案。你可以通过

pip安装名称解析器

在您的代码中,将此库导入为:

代码语言:javascript
复制
from nameparser import HumanName

name = "John Wayne Smith"
name_parts = HumanName(name)
name_parts.title
name_parts.first
name_parts.middle
name_parts.last
name_parts.suffix
name_parts.nickname
name_parts.surnames  # (middle + last)
name_parts.initials  # (first initial of each name part)
票数 2
EN

Stack Overflow用户

发布于 2020-10-26 11:08:37

我们可以使用以下正则表达式:

代码语言:javascript
复制
(?P<First>\S+)\s(?:(?P<Middle>\S*)\s)?(?P<Last>\S+)$

它寻找一个名字和姓氏,也可以选择一个中间名。

示例

代码语言:javascript
复制
import re

s = "John Wayne Smith"
s2 = "John Smith"

p = re.compile(r"(?P<First>\S+)\s(?:(?P<Middle>\S*)\s)?(?P<Last>\S+)$")
代码语言:javascript
复制
p.match(s).groupdict()
# {'First': 'John', 'Middle': 'Wayne', 'Last': 'Smith'}

p.match(s2).groupdict()
# {'First': 'John', 'Middle': None, 'Last': 'Smith'}

请注意,match将从开始到结束匹配整个字符串。请确保事先清理和验证您的输入,因为正则表达式对于他们不期望的输入有些易碎。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64535868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档