2016-03-16 120 views
1

我在写一个程序,它会要求用户输入几个名字,用分号分隔。姓名将作为姓氏,名字输入。该程序然后将在单独的行上以名字lastname格式打印每个名称。到目前为止,我的程序是:分割一个名字的字符串

def main(): 

    names=input("Please enter your list of names: ") 
    person=names.split(";") 
    xname=person.split(",") 

这是我得到的,因为当我尝试在逗号分割时出现错误。我究竟做错了什么?输出应如下所示:

Please enter your list of names: Falcon, Claudio; Ford, Eric; Owen, Megan; Rogers, Josh; St. John, Katherine 

You entered: 

Claudio Falcon 

Eric Ford 

Megan Owen 

Josh Rogers 

Katherine St. John 
+0

显示回溯 - 将其剪切并粘贴到您的问题以及输入的内容中 –

+0

如果其中一个答案解决了您的问题,您应该接受它(单击复选标记旁边的相应答案)。这有两件事。它让每个人都知道你的问题已经得到解决,让你满意,并且它可以帮助你帮助你。 [见这里](http://meta.stackexchange.com/a/5235)的完整说明。 –

回答

1

.split是返回字符串列表的字符串的方法。因此,它可以很好地分割原始字符串的名称,但是不能在结果列表中调用它(list没有.split方法,这实际上没有意义)。所以你需要在列表中的每个字符串上调用.split。为了整洁,你应该清理名字上的任何前导或尾随空格。就像这样:

names = "Falcon, Claudio; Ford, Eric; Owen, Megan; Rogers, Josh; St. John, Katherine" 
for name in names.split(';'): 
    last, first = name.split(',') 
    print(first.strip(), last.strip()) 

输出

Claudio Falcon 
Eric Ford 
Megan Owen 
Josh Rogers 
Katherine St. John 
0

您正在拆分整个列表而不是每个字符串。它改成这样:

def main(): 

    names=input("Please enter your list of names: ") 
    person=names.split("; ") 
    xname=[x.split(", ") for x in person] 

要打印出来,这样做:

print("\n".join([" ".join(x[::-1]) for x in xname])) 
+0

这不会在'xname'里面留下一些流浪的逗号吗? – DaveBensonPhillips

+0

@HumphreyTriscuit:我不确定你的意思,但是你的评论指出我做错了什么。谢谢。 – zondo

+0

我指的是你在名称字符串中有逗号,但你现在已经修复了它。 – DaveBensonPhillips

1

.split返回一个列表,让您尝试

["Falcon, Claudio", "Ford, Eric" ...].split(',') 

这显然是不行的,如split是一个字符串方法。试试这个:

full_names = [] 
for name in names.split("; "): 
    last, first = name.split(', ') 
    full_names.append(first + " " + last) 

给你

['Claudio Falcon', 'Eric Ford', 'Megan Owen', 'Josh Rogers', 'Katherine St. John'] 
+0

至少有一个名称中有空格。 – Goodies

+0

@Goodies为什么这么重要? – DaveBensonPhillips

+0

永不停息。阅读错误。道歉 – Goodies

0

您可以使用下面的代码:

names = raw_input("Please enter your list of names:") 
    data = names.split(";") 

数据将返回列出这样的过程,列出得到的名字和姓氏

f_names=[] 
    for i in data: 
     l_name,f_name= i.split(",") 
     f_names.append(f_name+" "+l_name) 
    print "you entered \n"+ '\n'.join(p for p in f_names) 

因此,您可以打印所需的输入