使用xml.tree.ElementTree模块处理多种语言

时间:2018-04-09 17:56:04

标签: python xml csv unicode elementtree

我正在尝试解析XML文件并将内容的各个部分打印到CSV文件中,以便使用Microsoft Excel等程序进行操作。我遇到的问题是XML文件包含多个字母(阿拉伯语,西里尔语等),我对我应该使用的编码感到困惑。

import csv
import xml.etree.ElementTree as ET
import os

file = 'example.xml'
csvf = open(os.path.splitext(file)[0] + '.csv', "w+", newline='')
csvf.seek(0)
csvw = csv.writer(csvf, delimiter=',')
root = ET.parse(file).getroot()
name_base = root.find("name")
name_base_string = ET.tostring(name_base, encoding="unicode", method="xml").strip()
csv_data.append(name_base_string)
csvf.close()

我不知道要传递给tostring()方法的编码。如果我使用'unicode'它会返回一个unicode python字符串,并且在写入CSV文件时一切都很好,但Excel似乎处理不当(Windows和Linux上的所有编辑器似乎都正确地看到了字符集)。如果我使用编码'UTF-8',该方法返回一个bytearray,如果我在没有解码的情况下传递给CSV编写器,我会在csv文件中收到字符串b'stuff'。

这里有什么我想念的吗? Excel是否只是处理某些编码?我已经读过UTF-8是一种编码,而Unicode只是一个字符集(你无法真正比​​较它们),但我仍然感到困惑。

0 个答案:

没有答案
相关问题