【问题标题】:Convert String to json python [closed]将字符串转换为json python [关闭]
【发布时间】:2018-10-30 07:18:26
【问题描述】:

我的 lambda 函数给出了这种类型的字符串

aws-internal/3 aws-sdk-java/1.11.432 Linux/4.9.124-0.1.ac.198.71.329.metal1.x86_64 OpenJDK_64-Bit_Server_VM/25.181-b13 java/1.8.0_181

现在我想把这个字符串转换成 Json 之类的

{
aws-internal:3,
aws-sdk-java:1.11.432,
 Linux:/4.9.124-0.1.ac.198.71.329.metal1.x86_64 
}

请给我一个建议,我搜索了许多网站和图书馆

【问题讨论】:

  • str.split() at 空格,对于每个str.split('/') at / :使用2-piece-lists 的结果列表来构造dict。丢弃元组("java","1.8.0_181") 或删除键"java" 之后。将字典填入json.dump()。请参阅 how-to-convert-list-of-key-value-tuples-into-dictionar 了解 dict 元组列表的工作原理。
  • 谢谢@PatrickArtner

标签: python python-3.x


【解决方案1】:

你可以这样做:

items = dict(a.split('/') for a in a_string.split())

测试代码:

a_string='aws-internal/3 aws-sdk-java/1.11.432 Linux/4.9.124-0.1.ac.198.71.329.metal1.x86_64 OpenJDK_64-Bit_Server_VM/25.181-b13 java/1.8.0_181'
items = dict(a.split('/') for a in a_string.split())
print(items)

结果

{
    'aws-internal': '3', 
    'aws-sdk-java': '1.11.432', 
    'Linux': '4.9.124-0.1.ac.198.71.329.metal1.x86_64', 
    'OpenJDK_64-Bit_Server_VM': '25.181-b13', 
    'java': '1.8.0_181'
}

【讨论】:

  • 可能是使用a.rpartition('/')[::2] 而不是 split 的想法,以确保您获得一个 2 元组来提供给 dict()。这将允许没有值的键或包含 / 本身的键......这是否可取可能取决于 OP 来决定。
猜你喜欢
  • 1970-01-01
  • 2014-01-08
  • 2013-11-21
  • 2020-04-10
  • 2018-02-23
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 2012-10-19
相关资源
最近更新 更多