亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 將名字拆分為名字、中間名和姓氏

使用 Python 將名字拆分為名字、中間名和姓氏

MMTTMM 2024-01-04 15:40:16
所以我基本上要求我有一個名字,我需要將它分成三個部分,并使用 Python 將其存儲到三個不同的變量中。例如:姓名=“約翰·韋恩·史密斯”那么期望的輸出應該是:名字=約翰中間名=韋恩姓氏 = 史密斯另外,我想檢查一下,如果某個人的中間名不存在,那么它應該是空白的。
查看完整描述

5 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

nameparse是您問題的完美解決方案。您可以通過以下方式安裝它

pip 安裝名稱解析器

在您的代碼中,將此庫導入為:

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)


查看完整回答
反對 回復 2024-01-04
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

使用 split 函數創建包含名稱的列表 第一個是名字 第二個是您的姓氏(如果名稱長度等于 2)


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}")



查看完整回答
反對 回復 2024-01-04
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

我們可以使用以下正則表達式:


(?P<First>\S+)\s(?:(?P<Middle>\S*)\s)?(?P<Last>\S+)$

它查找名字和姓氏,以及可選的中間名。


例子


import re


s = "John Wayne Smith"

s2 = "John Smith"


p = re.compile(r"(?P<First>\S+)\s(?:(?P<Middle>\S*)\s)?(?P<Last>\S+)$")

p.match(s).groupdict()

# {'First': 'John', 'Middle': 'Wayne', 'Last': 'Smith'}


p.match(s2).groupdict()

# {'First': 'John', 'Middle': None, 'Last': 'Smith'}

請注意,match將從頭到尾匹配整個字符串。請確保事先清理并驗證您的輸入,因為正則表達式對于它們不期望的輸入有些脆弱。


查看完整回答
反對 回復 2024-01-04
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

您可以使用str.split并len檢查結果:


name = "John Wayne Smith"

parts = name.split(maxsplit=3)

if len(parts) == 3:

    first, middle, last = parts

else:

    first = parts[0]

    middle = ""

    last = parts[-1]

print([first, middle, last])


查看完整回答
反對 回復 2024-01-04
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

Python 有一個稱為“解包”的功能,它允許您從列表中解構對象。有問題的列表來自調用split字符串上的方法。它需要一個字符串來分割。要解包,您必須具有以下形式的聲明[a, b, c] = list,其中 a、b 和 c 是您希望解包(按順序)的對象。所以你的代碼是

[first, middle, last] = 'John Wayne Smith'.split(' ')


查看完整回答
反對 回復 2024-01-04
  • 5 回答
  • 0 關注
  • 382 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號