好吧基本上我问的是他们的名字问题我希望这是一个输入而不是Forename和Surname.
现在有什么方法可以拆分这个名字吗?并从"句子"中取出最后一句话,例如
name = "Thomas Winter" print name.split()
什么输出只是"冬天"
你会发现这种方法的关键问题不是技术问题,而是人类问题 - 不同的人用不同的方式写出自己的名字.
事实上,"姓"和"姓"的术语本身就存在缺陷.
虽然许多混合家庭使用带连字符的姓氏,例如Smith-Jones,但有些人只是单独使用这两个名字,"Smith Jones",其中两个名字都是姓氏.
许多欧洲家族的名字有多个部分,例如"de Vere"和"van den Neiulaar".有时这些额外的东西有重要的家族历史 - 例如,几百年前由国王授予的前缀.
侧面问题:我已经正确地将这些资本化为我所引用的人 - "de"和"van den"不会为某些家庭获得大写字母,而是为其他人做.
相反,许多亚洲文化将姓氏放在首位,因为家庭被认为比个人更重要.
最后一点 - 有些人非常喜欢"少年"或"高级"或"III" - 你的代码不应该把它们视为姓氏.
还注意到有相当多的人使用的名称不是他们父母赋予的名字,我使用了以下方案并取得了一些成功:
全名(通常用于处理邮件); 姓; 已知为(会话中常用的名称).
例如:
全名:William Gates III; 姓氏:盖茨; 众所周知:比尔
全名:宋李; 姓氏:宋; 被称为:丽莎
尝试从单个输入中拆分名称的问题在于,对于姓氏中包含空格的人,您将无法获得完整的姓氏,我不相信您将能够编写代码来完全管理它.
如果可能的话,我建议你单独询问这些名字.
这是一个相当古老的问题,但我发现它正在寻找一种解决方案,从一个全球化的名称中解析出来.
http://code.google.com/p/python-nameparser/
数据的黄金法则 - 不要过早聚合 - 将字段粘合在一起比分离它们要容易得多.大多数人还有一个中间名,应该是一个可选字段.有些人有很多中间人.有些人只有一个名字,一个字.一些文化通常都有一个中间名字典,向家族树致敬,回到Golgafrincham Ark登陆.
您不需要此处的代码解决方案 - 您需要业务规则.
一个简单的方法来完成你在python中所要求的是
name = "Thomas Winter" LastName = name.split()[1]
(注意函数调用拆分的parantheses.)
split()创建一个列表,其中每个元素都来自原始字符串,由空格分隔.您现在可以使用name.split()[1]获取第二个元素,或使用name.split()[ - 1]获取最后一个元素
然而,正如其他人所说,除非你确定你只是得到一个像"First_Name Last_Name"这样的字符串,否则涉及的问题会更多.