【问题标题】:How to convert list into json format in python [duplicate]如何在python中将列表转换为json格式[重复]
【发布时间】:2020-02-19 05:17:11
【问题描述】:
x=json.dumps(result)
print(x)

输出:

['Client Name:'Sriram',
 'Trade Date :'03-09-2019',
 'Security :CERAMICIST-ICICLE,NAT CO - PHARMA',
 'Quantity:14,2',
 'Net Rate: 145.7500,552.3725',
 'Buy/Sell :'Buy ', 'Buy',
 'Net Total:2040.5000,1104.7450']

我想将此列表转换为 json 格式,如下所示:

{'Client Name': Sriram',
 'Trade Date' :03-09-2019',
 'Security' :['CERAMICIST-ICICLE','NAT CO - PHARMA',
 'Quantity':'14,2',
 'Net Rate':['145.7500','552.3725'],
 'Buy/Sell':['Buy','Sell',
 'Net Total':['2040.5000','1104.7450']

【问题讨论】:

  • 请分享您的清单
  • ['TradeDate :03-09-2019', 'Security :ICICIPRAMCICICI500', 'Quantity :14', 'NetSale: 145.7500', 'Buy/Sell :2040.5000BuyINF109KC1CZ3']
  • 等一下...您的结果不是有效的 json。你的意思是{'TradeDate' : '03-09-2019', ...} 还是['TradeDate :03-09-2019',....]
  • 如果有人解决了你的问题,别忘了点赞并接受答案。如果您的问题仍然存在,请评论问题所在!
  • 是的,有问题

标签: python json


【解决方案1】:

正如我在评论中提到的,您的结果不是有效的 JSON。

让我有这些假设:

  1. 你有一个字符串列表,每个字符串的形式为key : value
  2. 您想要一个 JSON 字符串,例如
    { "key1" : "value1",
      "key2" : "value2",...}
    
    (即所有键和值都是字符串)

你可以只构造一个dict,列表中的每一行都成为dict的一个条目,然后使用json.dumps

如果你需要保留值的类型(例如123应该是一个数字而不是字符串:"key1" : 123),那么它更复杂:你可能需要检查值的格式并转换它改正类型

另一个选择是,由于key: value 是 YAML 中的有效条目(注意缺少的双引号和冒号后的空格),您可以在消息中进行简单的按摩并构造一个 yaml 字符串,使用 yaml 解析器来解析它到一个字典,然后使用 json 解析器构造一个 json 字符串。比如:

import yaml
import json
l = [ "a:b", "c: 123", "d: true"]
result = json.dumps(
            yaml.load("\n".join( 
                      [ t[0] + ": " + t[1] for t in 
                          [ s.split(":", 1) for s in l]
                      ])))
# result string is '{"a": "b", "c": 123, "d": true}'

【讨论】:

    【解决方案2】:

    在 Python 中使用 dict comprehension 的一个衬垫。我们需要先使用dict理解将其转换为dict,然后使用json.dumps()将其转换为json格式。

    li = ['TradeDate :03-09-2019',
     'Security :ICICIPRAMCICICI500',
     'Quantity :14',
     'NetSale: 145.7500',
     'Buy/Sell :2040.5000BuyINF109KC1CZ3']
    
    
    di = {i.split(':')[0]:i.split(':')[1] for i in li}
    print(di)
    js = json.dumps(di)
    print(js)
    

    输出:

    {'TradeDate ': '03-09-2019', 'Security ': 'ICICIPRAMCICICI500', 'Quantity ': '14', 'NetSale': ' 145.7500', 'Buy/Sell ': '2040.5000BuyINF109KC1CZ3'}
    
    {"TradeDate ": "03-09-2019", "Security ": "ICICIPRAMCICICI500", "Quantity ": "14", "NetSale": " 145.7500", "Buy/Sell ": "2040.5000BuyINF109KC1CZ3"}
    

    【讨论】:

    • 你所做的是字典理解而不是列表理解
    • 感谢您指出。我已经编辑了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 2015-02-19
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2020-06-03
    相关资源
    最近更新 更多