Python 分裂一个人';s的名字分为名字和姓氏

Python 分裂一个人';s的名字分为名字和姓氏,python,split,Python,Split,基本上我是在问他们的名字 我希望这是一个输入,而不是名字和姓氏 现在有办法把这个名字分开吗?从“句子”中只取最后一个词 输出的只是像这样的“冬天”: print name.split()[-1] 像这样: print name.split()[-1] 您可能希望为此使用rsplit: rsplit([sep [,maxsplit]]) 使用sep作为分隔符字符串,返回字符串中的单词列表。如果给定了maxplit,则最多执行maxplit拆分,最右边的拆分。如果未指定sep或None,则任何

基本上我是在问他们的名字 我希望这是一个输入,而不是名字和姓氏

现在有办法把这个名字分开吗?从“句子”中只取最后一个词

输出的只是像这样的“冬天”:

print name.split()[-1]
像这样:

print name.split()[-1]

您可能希望为此使用rsplit:

rsplit([sep [,maxsplit]])

使用
sep
作为分隔符字符串,返回字符串中的单词列表。如果给定了
maxplit
,则最多执行
maxplit
拆分,最右边的拆分。如果未指定
sep
None
,则任何空白字符串都是分隔符。除了从右侧拆分外,
rsplit()
的行为类似于
split()
,下面将对其进行详细描述。版本2.4中的新功能

您可能希望为此使用rsplit:

rsplit([sep [,maxsplit]])

使用
sep
作为分隔符字符串,返回字符串中的单词列表。如果给定了
maxplit
,则最多执行
maxplit
拆分,最右边的拆分。如果未指定
sep
None
,则任何空白字符串都是分隔符。除了从右侧拆分外,
rsplit()
的行为类似于
split()
,下面将对其进行详细描述。版本2.4中的新功能

尝试从单个输入中分离姓名的问题在于,对于姓氏中有空格的人,您无法获得完整的姓氏,我认为您无法编写代码来完全管理这些姓氏


如果可能的话,我建议您单独询问姓名。

尝试从单个输入中分割姓名的问题是,您无法获得姓氏中有空格的人的完整姓氏,我不相信您能够编写代码来完全管理它


如果可能的话,我建议您单独询问姓名。

拆分姓名比看起来更难。有些名字有两个字的姓;有些人会输入名字、中间名和姓氏;有些名字有两个工作名。处理姓名的更可靠(或最不可靠)的方法是始终在单独的字段中捕获名字和姓氏。当然,这也带来了它自己的问题,比如如何处理只有一个名字的人,确保它适用于名称部分顺序不同的用户


名字很难,小心处理。

拆分名字比看起来更难。有些名字有两个字的姓;有些人会输入名字、中间名和姓氏;有些名字有两个工作名。处理姓名的更可靠(或最不可靠)的方法是始终在单独的字段中捕获名字和姓氏。当然,这也带来了它自己的问题,比如如何处理只有一个名字的人,确保它适用于名称部分顺序不同的用户


名字很硬,小心轻放。

。但是,用这种东西进行数据规范化确实是一个难题。我同意戴夫·杜普兰蒂斯关于要求单独输入的观点。

。但是,用这种东西进行数据规范化确实是一个难题。我同意戴夫·杜普兰蒂斯(Dave DuPlantis)关于要求单独输入的观点。

你会发现,这种方法的关键问题不是技术问题,而是人的问题——不同的人用不同的方式写自己的名字

事实上,“名字”和“姓氏”这两个术语本身就是有缺陷的

虽然许多混合家庭使用连字符的姓氏,如Smith Jones,但也有一些家庭只单独使用两个名字,“Smith Jones”,其中两个名字都是姓氏

许多欧洲姓氏有多个部分,如“de Vere”和“van den Neiular”。有时这些临时演员有重要的家族史——例如,几百年前国王授予他们的前缀

附带问题:我已经为我所指的人正确地大写了这些字母——“de”和“van den”在某些家庭中没有大写字母,但在其他家庭中有大写字母

相反,许多亚洲文化把姓氏放在首位,因为家庭被认为比个人更重要

最后一点——有些人非常看重“初级”或“高级”或“三级”——你的代码不应该把他们当作姓氏

还注意到有相当多的人使用的名字不是他们父母给的,我使用了以下方案并取得了一些成功:

全名(通常写在邮件地址上); 姓氏; 被称为(对话中常用的名称)

e、 g:

全名:威廉·盖茨三世;姓:盖茨;被称为:比尔


全名:宋力,;姓宋,;你会发现这种方法的关键问题不是技术问题,而是人的问题——不同的人用不同的方式写自己的名字

事实上,“名字”和“姓氏”这两个术语本身就是有缺陷的

虽然许多混合家庭使用连字符的姓氏,如Smith Jones,但也有一些家庭只单独使用两个名字,“Smith Jones”,其中两个名字都是姓氏

许多欧洲姓氏有多个部分,如“de Vere”和“van den Neiular”。有时这些临时演员有重要的家族史——例如,几百年前国王授予他们的前缀

附带问题:我已经为我所指的人正确地大写了这些字母——“de”和“van den”在某些家庭中没有大写字母,但在其他家庭中有大写字母

相反,许多亚洲文化把姓氏放在首位,因为家庭被认为比个人更重要

最后一点——有些人非常看重“初级”或“高级”或“三级”——你的代码不应该把他们当作姓氏

还要注意的是,有相当多的人使用的名字并不是政府赋予的
import re
p = re.compile(r'^(\s+)?(Mr(\.)?|Mrs(\.)?)?(?P<FIRST_NAME>.+)(\s+)(?P<LAST_NAME>.+)$', re.IGNORECASE)
m = p.match('Mr. Dingo Bat')
if(m != None):
  first_name = m.group('FIRST_NAME')
  last_name = m.group('LAST_NAME')
def get_first_name(fullname):
    firstname = ''
    try:
        firstname = fullname.split()[0] 
    except Exception as e:
        print str(e)
    return firstname

def get_last_name(fullname):
    lastname = ''
    try:
        index=0
        for part in fullname.split():
            if index > 0:
                if index > 1:
                    lastname += ' ' 
                lastname +=  part
            index += 1
    except Exception as e:
            print str(e)
    return lastname

def get_last_word(string):
    return string.split()[-1]

print get_first_name('Jim Van Loon')
print get_last_name('Jim Van Loon')
print get_last_word('Jim Van Loon')
name = "Thomas Winter"
first, last = name.split()
print("First = {first}".format(first=first))
#First = Thomas
print("Last = {last}".format(last=" ".join(last)))
#Last = Winter
x=input("enter your name ")
l=x.find(" ")
print("your first name is",x[:l])
print("your last name is",x[l:])