XML到字典提取

2024-09-26 17:39:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个代码,ecd的一些值丢失了。我想将它们表示为'None'0000,以便能够创建数据帧。不幸的是,代码运行到丢失的地方,然后崩溃,我无法发现错误

错误消息:

File "extra.py", line 236, in <module>
    if dic['mudLogs']['mudLog']['geologyInterval'][i]['ecdTdAv']['#text'] != None:
  KeyError: 'ecdTdAv'

代码:

xml_file = 'C:\\Users\\jtfra\\Desktop\\Thesis\\Volve_Real_Time_DData\\WITSML Realtime drilling data\\Norway-Statoil-NO 15_$47$_9-F-11\\1\\mudLog\\1.xml'

def convert(xml_file, xml_attribs=True):
with open(xml_file, "rb") as f:    # notice the "rb" mode
    d = xmltodict.parse(f, xml_attribs=xml_attribs)
    return d

dic = convert(xml_file)
mdTop, ecd = [], []


 for i in range(len(dic['mudLogs']['mudLog']['geologyInterval'])):
    mdTop.append(dic['mudLogs']['mudLog']['geologyInterval'][i]['mdTop']['#text'])

    if dic['mudLogs']['mudLog']['geologyInterval'][i]['ecdTdAv']['#text'] != None:
        ecd.append(dic['mudLogs']['mudLog']['geologyInterval'][i]['ecdTdAv']['#text'])
    else:
        ecd.append('None')

print(ecd)

Tags: 代码textinnonexmlfileappenddic
1条回答
网友
1楼 · 发布于 2024-09-26 17:39:48

而不是访问它作为:

dic['mudLogs']['mudLog']['geologyInterval'][0]['ecdTdAv']

执行:

dic['mudLogs']['mudLog']['geologyInterval'][0].get('ecdTdAv', '0000')

或者类似的

您还可以检查密钥是否与以下项一起存在:

if 'ecdTdAv' in dic['mudLogs']['mudLog']['geologyInterval'][I]:
    # do something with it, e.g.:
    print(dic['mudLogs']['mudLog']['geologyInterval'][i]['ecdTdAv']['#text'])

相关问题 更多 >

    热门问题