嵌套有序的dict迭代失败

时间:2018-05-18 19:29:50

标签: python python-3.x list ordereddictionary xmltodict

读者注意:这些数据最初是从XML获取的 - 如果有更简单的方法将xml直接导入mysql数据库请告诉我 - 已经搜索了很多但还没有找到。

我正在尝试通过一个有序的dict进行for循环,该dict已根据我从API获得的返回值对dicts进行了排序。响应数据大致如下(从xml转换后)

OrderedDict([('@name', 'namex'), 
    ('type', OrderedDict([('member', ['aaa', 'bbb'])])), 
    ('location', OrderedDict([('member', 'ccc')])), 
    ('currency', OrderedDict([('member', 'ddd')])), 
    ('10-k', OrderedDict([('member', 'eee')])), 
    ('market-cap', OrderedDict([('member', 'fff')])), 
    ('revenue', OrderedDict([('member', 'ggg')])), 
    ('sector', OrderedDict([('member', 'www')])), 
    ('risk', OrderedDict([('member', 'xxx')])), 
    ('leverage', OrderedDict([('member', 'yyy')])), 
    ('financials', OrderedDict([('group', OrderedDict([('member', 'zzz')]))])), 

这让我感到非常挑衅让我的for循环开心并经历这一点,左边的每个项目都是一个列标题,整个blob是一行,

我是否应该尝试使用正则表达式执行某些操作,然后使用sed / awk忽略/删除/编辑文本然后尝试迭代?

寻找下一步的建议,在一个更简单的有序dict上,我的for循环成功但是api反应更好

OrderedDict([('aaa', 'bbb'), ('ccc', 'ddd'), ('eee', 'fff'), ('hhh', 'iii')])

我一直在尝试使用https://www.python-course.eu/sql_python.php来学习但是没有这种情况,如果有人为我的学习提供了更好的信息来源,请告诉我!

my for循环如下所示

for id, a in enumerate(data_response):
    format_str = """INSERT INTO asdf (id, name, type, location, currency, 10-k, market-cap , revenux, sector, risk, leverage, financials) VALUES ({id}, '{name}', '{type}', '{location}', '{currency}', '{10-k}', '{market-cap }', '{revenux}', '{sector}', '{risk}', '{leverage}', '{financials}');"""
    insert_a = format_str.format(id=id, name=a, type=data_response[a], location=data_response[a], currency=data_response[a], 10-k=data_response[a], market-cap=data_response[a], revenux=data_response[a], sector=data_response[a], risk=data_response[a], leverage=data_response[a], financials=data_response[a])
print(insert_a)

我的预期结果

INSERT INTO asdf (id, name, type, location, currency, 10-k, market-cap, revenuw, sector, risk, leverage, financials) VALUES (x, 'namex', 'aaa', '(bbb, ccc)', 'ddd', 'eee', 'fff', 'ggg', 'www', 'xxx', 'yyy', 'zzz' )

我需要能够遍历'name'有序的dict然后在名称的每个部分下面的细节,并考虑一个单循环。

0 个答案:

没有答案