Синтаксический анализ атрибута Python возвращает None для xml: id - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь извлечь некоторую информацию из файла tei, используя этот код:

tree = ET.parse(path)
root = tree.getroot()
body = root.find("{http://www.tei-c.org/ns/1.0}text/{http://www.tei-c.org/ns/1.0}body")  
for s in body.iter("{http://www.tei-c.org/ns/1.0}s"):
    for w in s.iter("{http://www.tei-c.org/ns/1.0}w"):
        wordpart = w.find("{http://www.tei-c.org/ns/1.0}seg")
        word = ''.join(wordpart.itertext())
        type = w.get('type')
        xml = w.get('xml:id') 
        print(type)             
        print(xml)

Вывод для type правильный, он печатает, например, "имя существительное". Но за xml:id я могу получить только None. Вот фрагмент XML-файла, который мне нужно проанализировать:

<w type="noun" xml:id="w.4940"><seg type="orth">sloterheighe</seg>...

1 Ответ

1 голос
/ 30 апреля 2019

Чтобы получить значение атрибута xml:id, вам нужно указать URI пространства имен следующим образом (см. эту публикацию SO для более подробной информации):

xml = w.attrib['{http://www.w3.org/XML/1998/namespace}id']

или

xml = w.get('{http://www.w3.org/XML/1998/namespace}id')

Также обратите внимание, что type - это встроенный метод в Python, поэтому избегайте его использования в качестве имени переменной.

...