【问题标题】:Python XML Parse Attribute not availablePython XML 解析属性不可用
【发布时间】:2021-03-09 20:22:55
【问题描述】:

我正在尝试解析以下 xml 消息块: ''''

<Recommendations>
    <STOpinion>
        <ConsOpinion code="1" set="STD" desc="By">
            <ConsOpValue type="NumOfEst" unit="N">
                <ConsValue dateType="CURR">15</ConsValue>
            </ConsOpValue>
        </ConsOpinion>
    </STOpinion>
</Recommendations>

''''

以此作为我的代码: ''''

opin_type=[]
opin_count=[]



        

for i in d.iter('Recommendations'):
                i_iter=et.Element('root')
                i_iter=i
                for j in i.iter('STOpinion'):
                    j_iter=et.Element('root')
                    j_iter=j
                    for k in j.iter('ConsOpinion'):
                        k_iter=et.Element('root')
                        k_iter=k
                        for l in k.iter('ConsOpValue'):
                            l_iter=et.Element('root')
                            l_iter=l
                            for m in l.iter('ConsValue'):
                                m_iter=et.Element('root')
                                m_iter=m
                                opin_type.append(k.attrib['desc'])
                                opin_count.append(m.text)

'''' 但是我无法获得 k.attrib['desc'] 的值,它只显示 {set:"STD"} 作为属性。我需要提取 k.attrib['desc'] 的值 - 还有其他方法吗?

【问题讨论】:

  • 澄清一下:您的预期输出是By 还是其他?
  • 是的,我的预期结果是“By”

标签: python pandas xml-parsing


【解决方案1】:

既然你是在处理 xml,你不妨使用一个 xml 解析器来提取值:

recs = """your xml above"""

from lxml import etree
doc = etree.fromstring(recs)
print(doc.xpath('//STOpinion//ConsOpinion/@desc')[0])

输出:

By

【讨论】:

  • 感谢 Jack,这适用于字符串,但我无法将其应用于我的 xml 消息。它无法找到该索引,因为它无法识别@desc。我验证了消息的格式,所以想不出还有什么可能。
  • @Ksh 不确定是什么问题;它绝对适用于您问题中的 xml。也许您的实际 xml 编码/格式不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
相关资源
最近更新 更多