这是很多次发布在这里的类似问题,但我无法解决。
import json
str2 ="""[{'cta': [], 'ctr': 2880509, 'client_id': '229132', 'exchange': 'NSE_EQ', 'token': '3063', 'product': 'CO', 'order_type': 'M', 'duration': 'DAY', 'price': '0', 'trigger_price': '149.10', 'quantity': 1, 'disclosed_quantity': 0, 'side': 'S', 'avg_price': '148.10', 'traded_quantity': 1, 'pending_quantity': 0, 'message': '', 'exchange_order_id': '1300000006005800', 'syom_order_id': 'NA', 'order_number': '191101000336718', 'timestamp': '01/11/2019,12:19:45', 'exchange_timestamp': '01-Nov-2019 12:19:45', 'status': 'complete', 'time_in_micro': '1572590985928000', 'is_amo': False, 'order_complexity': 'CO', 'request_id': '1', 'valid_date': '--', 'tag': 'JWEB|TB1', 'comments': 'PLACE ORDER :: 229132|NSE_EQ|3063|EQ|I|0|1|S|CO|WEB|IP-172-31-4-125|1572590985897', 'fill_id': '', 'original_message': '', '_amo': False}]"""
str2 = (json.dumps(str2))
print(str2)
print(str2['client_id'])
为什么这不起作用?它说-
print(str2['client_id'])
TypeError: string indices must be integers
请注意,str2是从某个地方输出的,我的目标是获取client_id或任何其他变量。
所以我要寻找的是解析它的可能方法是什么?
答案 0 :(得分:2)
这里有 mutliple 问题。您似乎并没有考虑到这一点。
您以字符串开头。在字符串上调用json.dumps
只会给您另一个字符串。但是您也无法在原始字符串上调用json.loads
,因为它不是JSON;它似乎是Python对象的字符串表示形式。
但是,即使您正确解析了它,它也仍然无法工作,因为它代表字典的 list ,而不是单个字典。
这似乎不太可能是您外部系统的输出。如果您需要进一步的帮助,则需要确切说明如何获取该字符串。