如何使用str.join()?

时间:2014-02-18 18:54:40

标签: python string methods string-conversion

>>>seq = ("a", "b", "c") # This is sequence of strings.
str.join( "-",seq )
SyntaxError: multiple statements found while compiling a single statement

这里出了什么问题?我尝试将"更改为',但它没有帮助......

>>> seq = ("a", "b", "c") 
my_string = "-"
str.join(my_string, seq)
SyntaxError: multiple statements found while compiling a single statement

为什么?????

4 个答案:

答案 0 :(得分:8)

您的SPECIFIC实例中的问题似乎是您将多行粘贴到交互式解释器中并尝试将它们全部解析为一次。 IDLE(et.al)并不那么喜欢。单独进行,如第一个示例所示:

>>> seq = ("a","b","c")
>>> str.join("-", seq)
# "a-b-c"

当您执行str = "-"时,str.join(seq)仍然有效,因为它等同于my_string.join(seq),如上所述,但使用“长版本”(str.join(separator, sequence))不会工作。

如果要在Python shell中粘贴更长的行,通常按;分隔,但请不要在Python文件中粘贴这些行。我经常通过电子邮件为人们提供可重现的结果:

seq = ("a", "b", "c"); my_string = '-'; my_string.join(seq)

早期的问题是覆盖str构造函数。启动一个新的shell并尝试这个:

seq = ("a", "b", "c") 
my_string = '-'
str.join(my_string, seq)

你应该得到这个:

'a-b-c'

将join用作实例方法更为常见:

my_string.join(seq)

答案 1 :(得分:4)

它可以更容易地完成,因为调用方法的对象作为第一个参数传递,所以写

seq = ("a", "b", "c") 
my_string = '-'
print my_string.join(seq)

给出

'a-b-c'

按预期

答案 2 :(得分:1)

join是str数据类型的一种方法,因此您可以执行...

>>> seq = ("a", "b", "c")
>>> "-".join(seq)
'a-b-c'

答案 3 :(得分:1)

一旦你拥有:seq = ("a","b","c")

你可以使用其中一种语法(它们实际上是相同的,后者更规范):

>>> str.join("-",seq)
'a-b-c'

>>> "-".join(seq)
'a-b-c'