J'essaye d'analyser le fichier XML UTF-8 et de sauvegarder certaines parties dans un autre fichier. Le problème est, que c'est mon premier script Python et je suis totalement confus au sujet des problèmes de codage de caractères que je trouve.Lecture d'un fichier XML UTF-8 et écriture dans un fichier avec Python
Mon script échoue immédiatement quand il tente d'écrire le caractère non-ascii dans un fichier, mais il peut l'imprimer pour commander rapidement (au moins dans un certain niveau)
Voici le XML (des parties qui comptent au moins, il est un fichier * .resx qui contient des chaînes de l'interface utilisateur)
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="foo">
<value>bar</value>
</resheader>
<data name="lorem" xml:space="preserve">
<value>ipsum öä</value>
</data>
</root>
Et voici mon script python
from xml.dom.minidom import parse
names = []
values = []
def getStrings(path):
dom = parse(path)
data = dom.getElementsByTagName("data")
for i in range(len(data)):
name = data[i].getAttribute("name")
names.append(name)
value = data[i].getElementsByTagName("value")
values.append(value[0].firstChild.nodeValue.encode("utf-8"))
def writeToFile():
with open("uiStrings-fi.py", "w") as f:
for i in range(len(names)):
line = names[i] + '="'+ values[i] + '"' #varName='varValue'
f.write(line)
f.write("\n")
getStrings("ResourceFile.fi-FI.resx")
writeToFile()
Et voici le retraçage:
Traceback (most recent call last): File "GenerateLanguageFiles.py", line 24, in writeToFile() File "GenerateLanguageFiles.py", line 19, in writeToFile line = names[i] + '="'+ values[i] + '"' #varName='varValue' UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in ran ge(128)
Comment est-ce que je devrais corriger mon manuscrit ainsi il lirait et écrirait correctement les caractères UTF-8? Les fichiers que j'essaie de générer seront utilisés dans l'automatisation des tests avec Robots Framework.