我有一个字典列表,它以unicode形式出现,字典以字符串形式出现。我想从列表中删除unicode位并将字符串字典转换为正常的字典,以使其成为完整的dicts列表。
这就是现在的样子:
u' [" {" status":"可实现"," externalServiceRequestId": " 15_jan_003"," updatedOn":" 2018-01-15T07:12:23.412"," createdOn": " 2018-01-15T07:12:22.826","期望":{"容器":[]}, " serviceRequests":[{" status":"可实现", " externalServiceRequestId":" 15_jan_00_01"," updatedOn": " 2018-01-15T07:12:23.412"," createdOn":" 2018-01-15T07:12:22.826", "期望":{"容器":[{"产品":[{" productQuantity":20, " productAttributes":{" filter_parameters":[" product_sku = \' 41_test \'"]}}]}]},"实际":{"容器":[]},"类型&#34 ;: " PICK_LINE"},{"状态":"可实现"," externalServiceRequestId": " 11_jan_025"," updatedOn":" 2018-01-15T07:12:23.412"," createdOn": " 2018-01-15T07:12:22.827","期望":{"容器": [{" products":[{" productQuantity":20," productAttributes": {" filter_parameters":[" product_sku = \' 5003 \'"]}}]}]},"实际": {"容器":[]},"输入":" PICK_LINE"}],"实际":{"容器&# 34 ;: []},"属性":{" pps_bin_id":null," complete_time": " 2018-01-15T07:16:21.996532 + 00:00"," priority":1," pps_id":null, " pps_seat_name":null," order_options":{" pick_after_time": " 2017-10-01 09:15:00"," pick_before_time":" 2018-11-04 09:20:00"}, " user_name":null},"输入":" PICK"}"," {" status":& #34;完整&#34 ;, " externalServiceRequestId":" 15_jan_003"," updatedOn": " 2018-01-15T07:12:58.395"," createdOn":" 2018-01-15T07:12:22.826", "期望":{"容器":[]}," serviceRequests":[{" status": "完成"," externalServiceRequestId":" 15_jan_00_01"," updatedOn": " 2018-01-15T07:12:58.443"," createdOn":" 2018-01-15T07:12:22.826", "期望":{"容器":[{"产品":[{" productQuantity":20, " productAttributes":{" filter_parameters":[" product_sku = \' 41_test \'"]}}]}]},"实际":{"容器":[{"产品&# 34 ;: [{" productQuantity":20," productAttributes":{" pdfa_values": {" product_sku":" 41_test"}}},"州":"完成","条码":空值, "输入":" VIRTUAL"}]},"输入":" PICK_LINE"},{"状态": "完整&#34 ;, " externalServiceRequestId":" 11_jan_025"," updatedOn": " 2018-01-15T07:12:58.542"," createdOn":" 2018-01-15T07:12:22.827", "期望":{"容器":[{"产品":[{" productQuantity":20, " productAttributes":{" filter_parameters":[" product_sku = ' 5003 \'"]}}]}]},"实际":{"容器":[{"产品&# 34;:[],"州": "完成","条形码":null,"键入":" VIRTUAL"}]},"键入": " PICK_LINE"}],"实际":{"容器":[]},"属性": {" pps_bin_id":" 7"," complete_time": " 2018-01-15T07:16:57.003651 + 00:00","优先":1," pps_id":" 1", " pps_seat_name":" front_1"," order_options":{" pick_after_time": " 2017-10-01 09:15:00"," pick_before_time":" 2018-11-04 09:20:00"}, " user_name":" admin"},"输入":" PICK"}"]'
我尝试使用encode()方法从列表中删除u位但仍将其保留为字符串。此外,列表中的dicts是字符串,只需要作为dicts。
如果我使用ast.literal_eval(),则会出错 - 似乎无法评估。
在[60]中:new = ast.literal_eval(data)File"",第1行 [" {" status":"可实现"," externalServiceRequestId":" 15_jan_003"," updatedOn" :" 2018-01-15T07:12:23.412"," createdOn": " 2018-01-15T07:12:22.826","期望":{"容器":[]}, " serviceRequests":[{" status":"可实现", " externalServiceRequestId":" 15_jan_00_01"," updatedOn": " 2018-01-15T07:12:23.412"," createdOn":" 2018-01-15T07:12:22.826", "期望":{"容器":[{"产品":[{" productQuantity":20, " productAttributes":{" filter_parameters":[" product_sku = ' 41_test'"]}}]}]},"实际":{"容器":[]},"输入&#34 ;: " PICK_LINE"},{"状态":"可实现"," externalServiceRequestId": " 11_jan_025"," updatedOn":" 2018-01-15T07:12:23.412"," createdOn": " 2018-01-15T07:12:22.827","期望":{"容器": [{" products":[{" productQuantity":20," productAttributes": {" filter_parameters":[" product_sku =' 5003'"]}}]}]},"实际": {"容器":[]},"输入":" PICK_LINE"}],"实际":{"容器&# 34 ;: []},"属性":{" pps_bin_id":null," complete_time": " 2018-01-15T07:16:21.996532 + 00:00"," priority":1," pps_id":null, " pps_seat_name":null," order_options":{" pick_after_time": " 2017-10-01 09:15:00"," pick_before_time":" 2018-11-04 09:20:00"}, " user_name":null},"输入":" PICK"}"," {" status":& #34;完整&#34 ;, " externalServiceRequestId":" 15_jan_003"," updatedOn": " 2018-01-15T07:12:58.395"," createdOn":" 2018-01-15T07:12:22.826", "期望":{"容器":[]}," serviceRequests":[{" status": "完成"," externalServiceRequestId":" 15_jan_00_01"," updatedOn": " 2018-01-15T07:12:58.443"," createdOn":" 2018-01-15T07:12:22.826", "期望":{"容器":[{"产品":[{" productQuantity":20, " productAttributes":{" filter_parameters":[" product_sku = ' 41_test'"]}}]}]},"实际":{"容器":[{"产品": [{" productQuantity":20," productAttributes":{" pdfa_values": {" product_sku":" 41_test"}}},"州":"完成","条码":空值, "输入":" VIRTUAL"}]},"输入":" PICK_LINE"},{"状态": "完整&#34 ;, " externalServiceRequestId":" 11_jan_025"," updatedOn": " 2018-01-15T07:12:58.542"," createdOn":" 2018-01-15T07:12:22.827", "期望":{"容器":[{"产品":[{" productQuantity":20, " productAttributes":{" filter_parameters":[" product_sku = ' 5003'"]}}]}]},"实际":{"容器":[{"产品": [],"州": "完成","条形码":null,"键入":" VIRTUAL"}]},"键入": " PICK_LINE"}],"实际":{"容器":[]},"属性": {" pps_bin_id":" 7"," complete_time": " 2018-01-15T07:16:57.003651 + 00:00","优先":1," pps_id":" 1", " pps_seat_name":" front_1"," order_options":{" pick_after_time": " 2017-10-01 09:15:00"," pick_before_time":" 2018-11-04 09:20:00"}, " user_name":" admin"},"输入":" PICK"}"] ^ SyntaxError:语法无效
答案 0 :(得分:0)
转储您的unicode dicts列表,然后使用json加载。
x = u'["{"status": "fulfillable", "externalServiceRequestId": "15_jan_003", "updatedOn": "2018-01-15T07:12:23.412", "createdOn": "2018-01-15T07:12:22.826", "expectations": {"containers": []}, "serviceRequests": [{"status": "fulfillable", "externalServiceRequestId": "15_jan_00_01", "updatedOn": "2018-01-15T07:12:23.412", "createdOn": "2018-01-15T07:12:22.826", "expectations": {"containers": [{"products": [{"productQuantity": 20, "productAttributes": {"filter_parameters": ["product_sku = \'41_test\'"]}}]}]}, "actuals": {"containers": []}, "type": "PICK_LINE"}, {"status": "fulfillable", "externalServiceRequestId": "11_jan_025", "updatedOn": "2018-01-15T07:12:23.412", "createdOn": "2018-01-15T07:12:22.827", "expectations": {"containers": [{"products": [{"productQuantity": 20, "productAttributes": {"filter_parameters": ["product_sku = \'5003\'"]}}]}]}, "actuals": {"containers": []}, "type": "PICK_LINE"}], "actuals": {"containers": []}, "attributes": {"pps_bin_id": null, "complete_time": "2018-01-15T07:16:21.996532+00:00", "priority": 1, "pps_id": null, "pps_seat_name": null, "order_options": {"pick_after_time": "2017-10-01 09:15:00", "pick_before_time": "2018-11-04 09:20:00"}, "user_name": null}, "type": "PICK"}", "{"status": "complete", "externalServiceRequestId": "15_jan_003", "updatedOn": "2018-01-15T07:12:58.395", "createdOn": "2018-01-15T07:12:22.826", "expectations": {"containers": []}, "serviceRequests": [{"status": "complete", "externalServiceRequestId": "15_jan_00_01", "updatedOn": "2018-01-15T07:12:58.443", "createdOn": "2018-01-15T07:12:22.826", "expectations": {"containers": [{"products": [{"productQuantity": 20, "productAttributes": {"filter_parameters": ["product_sku = \'41_test\'"]}}]}]}, "actuals": {"containers": [{"products": [{"productQuantity": 20, "productAttributes": {"pdfa_values": {"product_sku": "41_test"}}}], "state": "complete", "barcode": null, "type": "VIRTUAL"}]}, "type": "PICK_LINE"}, {"status": "complete", "externalServiceRequestId": "11_jan_025", "updatedOn": "2018-01-15T07:12:58.542", "createdOn": "2018-01-15T07:12:22.827", "expectations": {"containers": [{"products": [{"productQuantity": 20, "productAttributes": {"filter_parameters": ["product_sku = \'5003\'"]}}]}]}, "actuals": {"containers": [{"products": [], "state": "complete", "barcode": null, "type": "VIRTUAL"}]}, "type": "PICK_LINE"}], "actuals": {"containers": []}, "attributes": {"pps_bin_id": "7", "complete_time": "2018-01-15T07:16:57.003651+00:00", "priority": 1, "pps_id": "1", "pps_seat_name": "front_1", "order_options": {"pick_after_time": "2017-10-01 09:15:00", "pick_before_time": "2018-11-04 09:20:00"}, "user_name": "admin"}, "type": "PICK"}"]'
y = json.dumps(x)
z = json.loads(y) ## will give normal string notation of you thing
现在你可以使用它将你的字符串dicts转换为普通的dicts。
op = [ast.literal_eval(a) for a in z]