【发布时间】:2018-11-24 03:51:30
【问题描述】:
我得到一个 xml 响应,它以字节为单位并由 xmltodict 解析,如下所示。由于我需要进一步使用响应,因此我想消除键中的所有'@'。我尝试了两种删除标志的方法,但仍然无法正常工作。有什么方法可以删除字典中的登录吗?
XML response (resp.text): {'HOLDING_QUERY_RESPONSE': OrderedDict([('@LOGIN_ID', '011'), ('@CLIENT_ID', '011'), ('@CHANNEL', 'MB'), ('@SESSION_KEY', '111'), ('RESULT', OrderedDict([('@STATUS', 'OK'), ('BUYING_POWER', '98’),( 'USD_BUYING_POWER', '12'), ('AVAILABLE_MKT_VAL', '110'), ('CASH_HOLDING', OrderedDict([('LINEITEM', [OrderedDict([('@CURRENCY_CODE', 'USD'), ('@AVAILABLE_BAL', '-233'), ('@CASH_BALANCE', '0.00'), ('@CASH_ON_HOLD', '0.00'), ('@UNSETTLED_CASH', '0.00'), ('@ACCRUED_INTEREST', '0.00'), ('@BUY_SOLD_CONSIDERATION', '-233'), ('@EX_RATE', '1'), ('@AVAILABLE_VAL', '6'), ('@AMT', '0.00'), ('@DUE_AMT', '0.00')]),…….)])])]))]))])}
第一次尝试的方法。错误是 dict 对象没有属性“iteritems()”。如果我删除 '.iteritem()',它会显示 Value Error: too many value to unpack.
info = {key.replace('@',''): item for key, item in xmltodict.parse(resp.text).iteritems()}
print(info)
第二次尝试的方法是先将其更改为字符串,然后再将其翻译回dict。但是,dict 似乎仍然没有被 json.dumps 转换为字符串。
info = json.dumps(resp.text)
info.replace('@','')
to_dict = json.loads(info)
print(to_dict)
【问题讨论】:
-
尝试
.items()而不是.iteritems()。您可能正在使用 Python 3。 -
感谢您的回复,奥斯汀。我之前试过这个,但仍然显示 dict 对象没有 item() 属性。
-
它是
items()。 -
info.replace('@','')返回一个新字符串,顺便说一下,你忽略了