TypeError:无法在python

时间:2015-08-10 06:09:28

标签: python python-3.x

以下是我的python脚本的一部分,它给出了错误:

tree = ET.ElementTree(element_table)
xml = ET.tostring(element_table)
xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><?xml-  stylesheet type=\"text/xsl\" href=\".\/xsl\/brsdk.xsl\"?>" + xml
obis_file = open( "OBIS_Support_Chart_" + sdk_version.replace( ".","_" ) +   ".xml", "w" )
obis_file.write( xml.decode('utf8') )

在运行脚本期间标记的错误如下:

Traceback (most recent call last):
  File "parse.py", line 115, in <module>
    xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><?xml- stylesheet type=\"text/xsl\" href=\".\/xsl\/brsdk.xsl\"?>" + xml
TypeError: Can't convert 'bytes' object to str implicitly

脚本中有什么问题?我使用的是Python 3.4。

1 个答案:

答案 0 :(得分:3)

ElementTree.tostring的文档提到了这种行为:

  

使用encoding="unicode"生成Unicode字符串(否则,生成字节串)。

因此,在您的情况下,由于在调用encoding="unicode"时未指定tostring(),因此它会返回bytes个对象。因此,当您尝试将字符串与先前的tostring()输出连接时,您尝试将字符串与字节连接起来,从而产生错误。

指定要解决此问题的编码:

xml = ET.tostring(element_table, encoding='unicode')

由于您有一个实际的str对象,因此在写入文件时您也不再需要解码xml

obis_file.write(xml)