xml文件中的重音字符:使用python element.etree处理

时间:2017-11-18 00:17:25

标签: python xml utf-8 elementtree

我有一个带有此记录的xml / rdf文件:

<lemon:LexicalEntry rdf:about="ita-tachimetro-n">

我想要的是提取三元组的对象并将其存储在字典中,其中键是单词(在示例中:tachimetro),值为pos- 词性:在名词的例子中是“n”。

所以这就是我所做的:

from lxml import etree
import re
parser = etree.XMLParser(encoding="utf-8")
regex = re.compile(r'^ita-(?P<word>[A-Za-z+]+)-(?P<pos>[anrv]{1})$')
doc = etree.parse('wn-ita-lemon.xml',parser=parser)
italian_vocabolary = {}
for df in doc.xpath('//lemon:LexicalEntry',namespaces={'lemon':'http://lemon-model.net/lemon#'}):
         for k,v in df.attrib.items():
                    rx = re.search(regex,v)
                    if rx is not None:
                        ita_vocabolary[rx.group('word')] = rx.group('pos')
                    else:
                        print(v) #to check the value

现在字符串基本上是两种;像上面的例子这样的单词,像ita-Locusta + migratoria-n这样的表达式(因为我在类regex中加了一个+)。

现在有一些正则表达式没有检索的词,并且它们是重音词:ita-sentenziosit%C3%A0-n它应该是ita-sentenziosità-n

xml文件没有doctype,我稍后插入:

<?xml version="1.0" encoding="UTF-8"?>

但是无论如何它都没有用,即使给了etree解析器正确的编码。

0 个答案:

没有答案