如何在Python中加入列表但是使最后一个分隔符不同?

dai*_*syl 29 python

如果只有两个项目,或者在最后两个项目之间使用逗号和符号,我试图将列表转换为用&符号连接的分隔字符串,例如

Jones & Ben
Jim, Jack & James
Run Code Online (Sandbox Code Playgroud)

我目前有这个:

pa = ' & '.join(listauthors[search])
Run Code Online (Sandbox Code Playgroud)

并且不知道如何整理逗号/&符号问题.初学者,所以完整的解释将不胜感激.

Jor*_*ley 25

"&".join([",".join(my_list[:-1]),my_list[-1]])
Run Code Online (Sandbox Code Playgroud)

我认为会起作用

或者只是

",".join(my_list[:-1]) +"&"+my_list[-1]
Run Code Online (Sandbox Code Playgroud)

处理只有2个项目的边缘情况

"&".join([",".join(my_list[:-1]),my_list[-1]] if len(my_list) > 2 else my_list)
Run Code Online (Sandbox Code Playgroud)


Joh*_*ica 15

你可以把它分成两个连接.加入除最后一项之外的所有项目", ".然后加入此字符串和最后一项" & ".

all_but_last = ', '.join(authors[:-1])
last = authors[-1]

' & '.join([all_but_last, last])
Run Code Online (Sandbox Code Playgroud)

注意:这不处理边缘情况,例如when authors为空或只有一个元素.


Sak*_*rma 9

一个班轮.只是将最后一个元素连接起来,作为分隔符.然后只是追加&,然后最后一个元素到最后.

print ', '.join(lst[:-1]) + ' & ' + lst[-1]
Run Code Online (Sandbox Code Playgroud)

如果您希望处理空列表等:

if len(lst) > 1:
    print ', '.join(lst[:-1]) + ' & ' + lst[-1]
elif len(lst) == 1:
    print lst[0]
Run Code Online (Sandbox Code Playgroud)