如何在Python中将UTF-8和其他编码中的字符写入文件?

时间:2012-06-06 04:33:18

标签: python xml utf-8 elementtree

我有一个SharePoint库,用于将用户输入的数据捕获为XML表单。此表单编码为UTF-8,但用户输入的某些字符不是ASCII(例如法语,西班牙语,毛利语中的单词),并且不会保存为UTF-8。

以下是此类数据的示例(缩写为sans元数据):

<?xml version="1.0" encoding="utf-8"?>
<my:myFields xmlns:my="http://schemas.microsoft.com/etc...">
    <my:title>Te whakaako i Te Reo Mäori -- Teaching Te Reo Mäori</my:title>

我正在使用ElementTree中的parse函数(xml.etree.ElementTree)将此信息编译成报告,然后我将其导出为CSV并在Excel电子表格中发送。因此,我想将UTF-8字符和所有用户输入转换为与Excel一起使用的单一格式(cp1252?):

import xml.etree.ElementTree as ET
course = ET.parse(os.path.join(path, filename))

当我将所有计算结果写入文件时,我收到以下错误(对于上面的示例XML):

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 48: ordinal not in range(128)

当我查看数据时,我看到标签中的文本已经转换为unicode,而'\ xe4'代替'ä':u'Te whakaako i Te Reo M\xe4ori -- Teaching Te Reo M\xe4ori'

我希望能够让我的Excel报告包含字符'ä',但似乎无法以实现此目的的方式进行编码。

我可能错过了一些明显的编码/解码点,但在一天中的大部分时间都在努力解决这个问题,所以任何帮助都会受到赞赏:)

1 个答案:

答案 0 :(得分:2)

您正在寻找codecs.open()