从文件中读取变音符号并将其插入XML

时间:2015-04-21 20:20:17

标签: python xml io diacritics

我目前正在尝试从某些文件中读取名称并将其插入XML中。一切顺利,直到其中一个名字包含变音标记,然后某个字母作为\xc4\x82C插入到我的中间字典中,或类似的东西。更重要的是,当我尝试插入带有变音符号的单词时,从上述词典中发出错误信号:

  

所有字符串必须兼容XML:Unicode或ASCII,无NULL字节或控制字符

所以我既不接受Python也不接受像变音符号这样的XML。我的文件都包含许多变音符号,我宁愿避免删除它们,因为在我的国家,一些名称只有变音符号才有所不同。

有什么方法吗?

1 个答案:

答案 0 :(得分:1)

据我了解,您将文件中的数据加载到Python 2.7 str中。在仅仅以字节表示的Python 2.7中,没有添加信息,这些字节应该实际代表什么字符。

您的XML工具包拒绝猜测,它只接受ASCII字符,其中映射非常清晰(即字节0-127)。因此,您必须将str解码为unicode对象:

ustr = data.decode(encoding)

然后,您可以将新的ustr传递给LXML。要确定您需要哪种编码,您应该查看您的数据。根据您的数据源自世界的位置,我会从'latin1''utf-8'等一些猜测开始。您可以尝试两者,看看哪一个给出了预期的结果。

如果您在Windows上进行开发,最好在IDLE Python或其他IDE中进行开发,那么Windows控制台在unicode方面非常有限。