【问题标题】:What does : TypeError: cannot concatenate 'str' and 'list' objects mean?TypeError: cannot concatenate 'str' and 'list' objects 是什么意思?
【发布时间】:2009-06-18 18:49:36
【问题描述】:

这个错误是什么意思?

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

【问题讨论】:

  • 你能发布你的代码吗?
  • 知道了——我的答案现在适合你。
  • else == '52.62263.':

标签: python string


【解决方案1】:

我不确定你是否知道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 中方括号之间的任何内容总是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",)

【讨论】:

  • @Tyler - 不知道你在说什么。我的代码不包含循环。
  • 指他的。似乎在不应该的时候几乎随机循环回 90。
【解决方案2】:

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

你可以这样做:

'a' + '1'

但不是:

'a' + 1

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

my_list.append('a')

【讨论】:

    【解决方案3】:

    OP 的代码中存在另一个问题:

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

    第一条语句中的括号将被忽略,导致第二条语句首先将k 绑定到'0',然后再绑定'.' ...看起来z = ('0.', ) 是有意的。

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 2020-09-18
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多