【问题标题】:how to convert string to array with values in python如何在python中将字符串转换为具有值的数组
【发布时间】:2021-07-11 12:06:53
【问题描述】:

我们确实有这个字符串:

{"transaction_invoiceno":"11111","fallback":false,"emvTags":"null"}

如何将此字符串转换为列表或数组,以便我们可以获取值并打印它们,例如:

transaction_invoiceno = 11111
fallback = false
emvTags = null

【问题讨论】:

  • 您在使用双引号括起来的字符串中使用双引号,这是错误的。是文件还是字符串?
  • 您可以尝试使用d = json.loads(your_string)。在此之后,您可以使用 d['transaction_invoiceno'] 访问您的变量
  • 谢谢你成功了!

标签: python arrays string list


【解决方案1】:

我相信类似下面的 sn-p 应该可以解决问题:

s = '{"transaction_invoiceno":"11111","fallback":false,"emvTags":"null"}'
s = s.replace('false', 'False')
exec('d = '+ s)

transaction_invoiceno = int(d["transaction_invoiceno"])
fallback = d["fallback"]
emvTags = d["emvTags"]

但是,null 将是一个字符串。

【讨论】:

    【解决方案2】:

    User:Johnny John Boy 给出了解决此问题的最佳方法之一。这是查看此代码的另一种方式:

    my_json = '{"transaction_invoiceno":"11111","fallback":false,"emvTags":"null"}'.replace('false', 'False')
    my_dict = eval(my_json)
    
    for k,v in my_dict.items():
        print(k, v)
    

    更多详情可以查看link

    【讨论】:

    • 有趣的是,我从这种方法开始,并认为它看起来像是在做 API 的东西,所以改变了我的方法 :-) 我更喜欢你的
    【解决方案3】:

    您可以像这样使用内置的json 库,尽管您需要将双引号替换为单引号,否则会出错。

    如果您想遍历字典的键、值对,您可以简单地使用.items() 方法。

    import json
    
    my_json = '{"transaction_invoiceno":"11111","fallback":false,"emvTags":"null"}'
    my_dict = json.loads(my_json)
    
    for k,v in my_dict.items():
        print(k, v)
    
    transaction_invoiceno 11111
    fallback False
    emvTags null
    

    【讨论】:

      【解决方案4】:
      import json
      
      data = json.loads('{"transaction_invoiceno":"11111","fallback":false,"emvTags":"null"}') 
      
      #
      # Get values by key name
      #
      transaction_invoiceno = data['transaction_invoiceno']
      fallback              = data['fallback']
      emvTags               = data['emvTags']
      
      #
      # Convert data types ("fallback" already set to bool by json.loads)
      #
      transaction_invoiceno = int(transaction_invoiceno)
      emvTags = (None if data['emvTags'] == "null" else data['emvTags']) 
      
      #
      # Check types
      #
      print f"transaction_invoiceno: type: {type(transaction_invoiceno)}, value: {transaction_invoiceno}")
      print(f"fallback: type: {type(fallback)}, value: {fallback}")
      print(f"emvTags: type: {type(emvTags)}, value: {emvTags}")
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 2017-02-19
        相关资源
        最近更新 更多