在Python中乘以字符串时使用sep

时间:2017-01-20 04:19:04

标签: python python-3.x arguments separator

我已经被告知在python 3.x中可以在你使用乘法重复的字符串之间添加一个分隔符,例如..

c = "rabble"

print(c * 5, sep = ' | ')

我希望打印出来" rabble"在每次重复之间使用字符串|进行5次。

它会一直打印重复的字符串,但没有分隔符。我在查找有关在这种特定情况下使用sep的信息时遇到了麻烦。我做错了什么?

2 个答案:

答案 0 :(得分:4)

你可以得到你想要的效果,但它与乘法本身并没有多大关系。

print()sep参数在非关键字参数之间提供了一个分隔符 - 例如:

>>> print("spam", "eggs", "ham", sep=" | ")
spam | eggs | ham

您可以将c传递给print() 5次,以获得您正在寻找的输出:

>>> c = "rabble"
>>> print(c, c, c, c, c, sep=" | ")
rabble | rabble | rabble | rabble | rabble

...但这很笨拙,如果你事先不知道你希望c出现多少次,就没用了。

要解决此问题,您可以使用argument unpacking - 一种特殊语法将列表或其他序列传递给函数,就好像其中的项目作为单独的参数传递一样:

>>> s = ["spam", "eggs", "ham"]
>>> print(*s)  # notice the *
spam eggs ham

要获得您正在寻找的结果,您可以从c的5个副本动态构建一个列表,并使用参数解包符号传递该列表:

>>> print(*([c] * 5), sep = ' | ')
rabble | rabble | rabble | rabble | rabble

请注意,您将包含c的列表乘以5而不是c本身。您可能会发现查看print(*(c * 5), sep = ' | ')实际执行的操作很有帮助,并尝试找出原因(提示:字符串也是序列)。

答案 1 :(得分:-1)

尝试这样的事情:

print(“ rabble |” * 5)