XML写入文件UnicodeDecodeError Python 2.7.3

2024-10-06 12:40:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我搜索了这个网站,没有找到一个适合我的答案。我的问题是,我试图将xml写入文件,当我从终端运行脚本时,我得到:

Traceback (most recent call last):
File "fetchWiki.py", line 145, in <module>
pageDictionary = qSQL(users_database)
File "fetchWiki.py", line 107, in qSQL
writeXML(listNS)
File "fetchWiki.py", line 139, in writeXML
f1.write(doc.toprettyxml(indent="\t", encoding="utf-8"))       
File "/usr/lib/python2.7/xml/dom/minidom.py", line 57, in toprettyxml
self.writexml(writer, "", indent, newl, encoding)
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1751, in writexml
node.writexml(writer, indent, addindent, newl)
----//---- more lines in here ----//----
self.childNodes[0].writexml(writer, '', '', '')
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1040, in writexml
_write_data(writer, "%s%s%s" % (indent, self.data, newl))
File "/usr/lib/python2.7/xml/dom/minidom.py", line 297, in _write_data
writer.write(data)
File "/usr/lib/python2.7/codecs.py", line 351, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1176: ordinal not
in range(128)

此代码来自以下代码:

^{pr2}$

无论是否有编码/解码'igonore'参数,都会发生错误。 添加

# -*- coding: utf-8 -*- 

没用。在

我使用Eclipse和Pydoc创建了python文档,它工作得很好,没有问题,但是当我从终端运行它时,它会出错。在

任何帮助,包括链接到我没有找到的答案是非常感谢。在

谢谢。在


Tags: inpyselfdatalibusrlinexml
1条回答
网友
1楼 · 发布于 2024-10-06 12:40:36

不应对用于属性的字符串进行编码。minidom库在编写时为您处理这些问题。在

您的错误是由bytestrings与unicode数据混合造成的,并且您编码的bytestrings不能被解码为ASCII。在

如果您的一些数据被编码,而其中一些数据在unicode中,那么首先要尽量避免这种情况。如果无法避免必须处理混合数据,请执行以下操作:

page = doc.createElement('Page')
if not isinstance(title, unicode):
    title = title.decode('latin1', 'ignore')
page.setAttribute('Title', title)

请注意,您不需要使用doc.toprettyxml();您也可以指示doc.writexml()为您缩进XML:

^{pr2}$

相关问题 更多 >