python - 使用 xml.etree.ElementTree 解析 XML 时获取空列表作为属性

标签 python xml python-3.x cyrillic

所以我使用 python 3 来解析 XML。

text = '''
<body>
       <list>
         <item>
            <cmid>16934673</cmid>
            <day>29.02.2016</day>
            <relay>1</relay>
            <num>1</num>
            <starttime>08:15</starttime>
            <endtime>08:55</endtime>
            <subjid>81327</subjid>
            <subjname>Литературное чтение</subjname>
            <subjabbr>Лит.чт.</subjabbr>
            <sgid>447683</sgid>
            <sgname>Литературное чтение</sgname>
            <tid>551817</tid>
            <tlastname>Фамилия</tlastname>
            <tfirstname>Имя</tfirstname>
            <tmidname>Отчество</tmidname>
            <roomid>68672</roomid>
            <roomname>Филиал 1 кабинет</roomname>
        </item>
      </list>
    </body>'''

我尝试通过这种方式使用 xml.etree.ElementTree 获取 subjname

>>> import xml.etree.ElementTree  as ET
>>> doc = ET.fromstring(text)
>>> print(doc[0][0][7].tag)
subjname
>>> print(doc[0][0][7].attrib)
{}

所以我总是得到一个空的字典。但我找不到问题所在。我认为问题是属性是西里尔字母,但是当我尝试获取 cmid 属性时出现同样的问题

>>> doc = ET.fromstring(r.text.encode('utf-8'))
>>> print(doc[0][0][0].attrib)
{}

最佳答案

.attrib 在您的情况下是一个空字典,因为您显示的标签根本没有任何属性。您可能打算获得 .text相反:

doc.find("subjname").text

关于python - 使用 xml.etree.ElementTree 解析 XML 时获取空列表作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683790/

相关文章:

c++ - 带有 boost::python 函数的 Scipy

python - Tkinter 最大化/恢复/调整差异化大小

java - 无效不调用 onDraw()

python - 嗨,将 python 中的值设置为列表中的任何索引的更 pythonic 方法是什么?

python - "python3"正在执行 "python3.8"而不是 "python3.9"

python - "ImportError: module ' xxxxxxxx ' has no attribute ' 主要 '"将项目移植到 Heroku 时

python - Linux libnetfilter_queue延迟包问题

c++ - OpenCV fileStorage XML格式——如何在一个文件中写入和读取多个相同类型的结构

java - 无法执行 android :onClick 的方法

python - PIP fatal error