当我循环逗号以分隔它的不同部分时,如何去除字符串中的最后一个逗号

时间:2017-01-22 21:01:05

标签: python

我正在尝试循环列表的每个元素,并将列表的每个元素附加到格式为aa, bb, cc, dd, ee, ....

的字符串中

我的循环是这样的:

    string = "" 

    for num in sorted(list):
       string = "xyz" + "-" + str(list[num])
       string = string + ", "

    return string

输出的格式类似于xyz - 1, xyz - 3, xyz -6,

如何在没有最后一个逗号的情况下以这样的格式结束 xyz - 1, xyz - 3, xyz -6

2 个答案:

答案 0 :(得分:2)

您可以使用str.join

,而不是自己构建字符串
string = ', '.join("xyz-"+str(x) for x in sorted(list))
在充当分隔符的字符串上调用

.join:它将插入元素之间(但不会在最后一个元素之后)。在join中,您需要提供一个可迭代(list,tuple,set,generator,...),它提供应该连接在一起的字符串。

在这种情况下,我们编写了一个迭代器,对于x中的每个sorted(list)生成一个字符串"xyz-"+str(x),这些产品将连接在一起。

<强>错误吗

您的代码中可能还有一个错误:


for num in sorted(list):
    string = "xyz" + "-" + str(list[num])

如果在列表上使用for,则会获得元素,而不是索引。因此它应该是num而不是list[num]

答案 1 :(得分:1)

使用str.join和列表理解来避免这样做:

return ", ".join(["xyz-{}".format(num) for num in sorted(lst)])

(并注意您的代码还有其他问题:使用list作为变量,执行lst[num]需要num是2个示例)

([不是拼写错误:创建列表理解而不是生成器理解可以让join更快地工作:List vs generator comprehension speed with join function