Python3 TypeError:只能将列表(而不是“ str”)连接到列表

时间:2018-09-05 12:05:16

标签: python python-3.x python-2.7 odoo odoo-11

我要将odoo 11,python 2.7移植到python3。我已经编辑了一个插件,该插件属于odoo,python代码。

代码是:

vat = invoice.partner_id.vat or ''
vat = list(filter(lambda x: x.isnumeric(), vat[:2])) + vat[2:]

错误是:

TypeError: can only concatenate list (not "str") to list

我该如何解决,这段代码有什么问题?请帮助我。

2 个答案:

答案 0 :(得分:1)

list(filter(lambda x: x.isnumeric(), vat[:2]))

此操作始终在 上面,返回列表

vat = invoice.partner_id.vat or '' 
  • 似乎,此操作返回str(由于or '')。

如果您希望自己的type(vat)==list,则应该使用

vat = invoice.partner_id.vat or []

如果期望type(vat)==str,则应将过滤后的列表转换为str,例如

"".join(list(filter(lambda x: x.isnumeric(), vat[:2]))) + vat[2:]

答案 1 :(得分:-1)

使用行

vat = invoice.partner_id.vat or ''
#convert string to list
vat = [x for x in val]
vat = list(filter(lambda x: x.isnumeric(), vat[:2])) + vat[2:]

首先将字符串转换为列表。