拆分一串名字

时间:2016-03-16 23:52:36

标签: python string split

我正在尝试编写一个程序,要求用户输入多个名称,用分号分隔。名称将作为姓氏,名字输入。然后,程序将在单独的行上以名字姓氏格式打印每个名称。到目前为止,我的计划是:

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

4 个答案:

答案 0 :(得分: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']

答案 1 :(得分: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

答案 2 :(得分: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]))

答案 3 :(得分:0)

您可以使用以下代码:

context 'when there are no fees' do
  it 'is not valid' do
    described_class_object = described_class.build(...some params...)
    described_class_object.fees = []
    expect(described_class_object).to_not be_valid
  end
end

数据将返回您的列表,因此处理该列表以获取名字和姓氏

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

这样你可以打印所需的输入