什么:TypeError:无法连接'str'和'list'对象意味着什么?

时间:2009-06-18 18:49:36

标签: python string

这个错误是什么意思?

  

TypeError:无法连接'str'和'list'对象

以下是代码的一部分:

for j in ('90.','52.62263.','26.5651.','10.8123.'):
    if j == '90.':
        z = ('0.')
    elif j == '52.62263.':
        z = ('0.', '72.', '144.', '216.', '288.')

    for k in z:
        exepath = os.path.join(exe file location here)
        exepath = '"' + os.path.normpath(exepath) + '"'
        cmd = [exepath + '-j' + str(j) + '-n' + str(z)]

        process=Popen('echo ' + cmd, shell=True, stderr=STDOUT )
        print process

3 个答案:

答案 0 :(得分:11)

我不确定您是否知道cmd是一个元素list,而不是字符串。

将该行更改为以下将构造一个字符串,其余代码将起作用:

# Just removing the square brackets
cmd = exepath + '-j' + str(j) + '-n' + str(z)

我假设您只使用括号对操作进行分组。如果一切都在一条线上,那就没有必要了。如果你想把它分成两行,你应该使用括号,而不是括号:

# This returns a one-element list
cmd = [exepath + '-j' + str(j) + 
       '-n' + str(z)]

# This returns a string
cmd = (exepath + '-j' + str(j) + 
       '-n' + str(z))

python中方括号之间的任何内容总是 a list。括号之间的表达式被评估为正常,除非表达式中有逗号,在这种情况下括号充当tuple构造函数:

# This is a string
str = ("I'm a string")

# This is a tuple
tup = ("I'm a string","me too")

# This is also a (one-element) tuple
tup = ("I'm a string",)

答案 1 :(得分:4)

字符串对象只能与其他字符串连接。 Python是一种强类型语言。它不会为你强制类型。

你可以这样做:

'a' + '1'

但不是:

'a' + 1

在您的情况下,您正在尝试连接字符串和列表。这不行。您可以将项目附加到列表中,如果这是您想要的结果:

my_list.append('a')

答案 2 :(得分:2)

OP代码中还有另一个问题:

z = ('0.')然后for k in z:

第一个语句中的括号将被忽略,导致第二个语句首先绑定k'0'然后'.' ...看起来像z = ('0.', )