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

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

我正在移植 odoo 11,python 2.7 到 python 3. 我已经编辑了一个属于 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

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

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

以上操作always returns list.

vat = invoice.partner_id.vat or '' 
  • 好像,这个操作returnsstr(因为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:]

使用线路

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:]

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