我有一个带有此记录的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解析器正确的编码。