处理多种语言xml.tree.ElementTree莫杜

2024-04-25 02:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解析一个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只是一个字符集(你不能真正比较它们),但我仍然感到困惑。你知道吗


Tags: 文件csvnameimport编码baseosunicode