我在utf-8中使用西里尔文本解析xml文件时遇到问题
来自xml的一些行:
............
<programme start="20110405022000 +0300"
stop="20110405031000 +0300" channel="4000"> <title
lang="bul">Модерно</title> <sub-title
lang="bul"></sub-title> <desc
lang="bul">Тоук шоу. Модерно е токшоу
с водещ и продуцент Радост Драганова.
Предаването разисква всички теми,
които интересуват жените, като им
помага да изглеждат по-добре и да се
чувстват по-добре</desc> <category
lang="bul">0</category> </programme>
<programme start="20110405031000 +0300"
stop="20110405050000 +0300" channel="4000"> <title
lang="bul">Клонинг</title> <sub-title
lang="bul"></sub-title> <desc
lang="bul">Еп. 89 и 90, сериал.
Любовта между Хаде и Лукас се ражда в
Мароко, където двамата се запознават.
Но мюсюлманските обичаи разделят
влюбените. Хаде е родена и израснала в
САЩ, но след смъртта на майка си
заминава за Мароко при чичо си
Али</desc> <category
lang="bul">0</category> </programme>
............
我使用DOMTree = xml.dom.minidom.parse(“text.xml”)并收到错误:
Traceback (most recent call last):
File "t3.py", line 9, in <module>
DOMTree = parse(datasource)
File "/usr/lib/python2.6/xml/dom/minidom.py", line 1918, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 928, in parse
result = builder.parseFile(file)
File "/usr/lib/python2.6/xml/dom/expatbuilder.py", line 207, in parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 10, column 18
第10行,第18列是第一个西里尔符号。 在xml文件的第一行是
<?xml version="1.0" encoding="utf-8"?>
有什么想法吗?
答案 0 :(得分:1)
您的xml文件必须格式正确,即它必须只有一个根元素。尝试在输入文件的开头和结尾添加根标记。
答案 1 :(得分:1)
你说“”“如果我把第一行的编码更改为koi8-r就可以了。但我想使用utf-8。”“”
我认为你的意思是,如果XML文件以
开头,它就可以工作<?xml version="1.0" encoding="KOI8-R" ?>
如果确实如此,那么您的文件将以KOI8-R
编码。
如果您想使用UTF-8输入文件,则不应将文件编码为KOI8-R,或者您应将文件从KOI8-R转码为UTF-8。
如果“我想使用utf-8”意味着别的东西,请解释一下。
答案 2 :(得分:1)
我建议使用chardet。以下代码可能有所帮助。我有xml数据为GB3212。我使用chardet只是将我的源码转换为utf-8。我希望这会有所帮助。
xml_data_type = chardet.detect(xml_data_source)['encoding']
print xml_data_type '''检查你的编码'''
xml_data = xml_data.decode(xml_data_encoding)
xml_data = xml.data.encode(“utf-8”)