将文本添加到XML文本TypeError:+ =:'NoneType'和'str'

时间:2019-08-15 20:54:09

标签: python python-2.7

我正在尝试使用此代码将文本添加到XML文本字段。但我收到此错误TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str'

def has_Transp_Const(Rid):
    path = root.find('.//BUILDING/has_transp_const')
    if path.items() is None:
        path.text = '#{}' .format(str(Rid))
    else:
        path.text += ' #{}' .format(str(Rid))

我以XML开头:

<BE>
    <BUILDING rid="#0">
        <has_transp_const/>
    </BUILDING>
</BE>

想要的输出:

<BE>
    <BUILDING rid="#0">
        <has_transp_const>#1 #2</has_transp_const>
    </BUILDING>
</BE>

当我尝试使用此代码时,它工作正常:

OUT = ''
for i in range(10):
    if i == 0:
        OUT = '#{}' .format(str(i))
    else:
        OUT += ' #{}' .format(str(i))
print(OUT)

1 个答案:

答案 0 :(得分:0)

这是因为示例中的path.items()返回空列表,因此path.items() is None == False函数进入第二种条件,并且由于path.text为None,因此您会获得异常。

只需将path.items()更改为path.text

def has_Transp_Const(Rid):
    path = root.find('.//BUILDING/has_transp_const')
    if path.text is None:
        path.text = '#{}'.format(str(Rid))
    else:
        path.text += '#{}'.format(str(Rid))