如何通过python在xml中保存“±”?

问题描述 投票:0回答:1

我有以下XML:

newX.xml

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <country name="Liechtenstein">
    <neighbor name="Austriaą" direction="E"/>
    <neighbor name="a" direction="W"/>
</country>
</data>

Python脚本:

# -*- coding: cp1250 -*-
import xml.etree.ElementTree as ET
xml = 'c://newX.xml'

tree = ET.parse(xml)
root = tree.getroot()
for rank in root.iter('neighbor'):
   rank.set('name', 'ą')
ET.dump(root)

我试图将一个字符'''设置为'name',但我有一个错误:

UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xb9:序数不在范围内(128)

如何解决这个问题?

python xml unicode xml-parsing
1个回答
4
投票

您需要使用unicode值。例如,使用带有u''的unicode文字:

rank.set('name', u'ą')

这导致:

<data>
    <country name="Liechtenstein">
    <neighbor direction="E" name="&#216;" />
    <neighbor direction="W" name="&#216;" />
</country>
</data>

而是传递cp1250编码的字节,必须将其解码为Unicode,并使用默认的编解码器ASCII自动进行。这不起作用,因为你的bytestring包含十六进制值B9(cp1250编码中的ą)的字节,并且它不是有效的ASCII值。

您可能想要阅读Python和Unicode:

© www.soinside.com 2019 - 2024. All rights reserved.