【问题标题】:How to convert string without quotes to dictionary in python如何在python中将不带引号的字符串转换为字典
【发布时间】:2019-03-07 19:43:46
【问题描述】:

我必须将不带引号的字符串转换成字典。

device: 0, name: GeForce GTX 1080 8GB, pci bus id: 0000:01:00.0

“设备”、“名称”和“pci 总线 ID”必须是键,

并且“0”、“GeForce GTX 1080 8GB”、“0000:01:00.0”必须是值。

我从 tensorflow.python.client.list_local_devices() 得到这个

【问题讨论】:

  • 可能将它们的类型更改为字符串?
  • 他们制作不带引号的字符串?

标签: python string dictionary tensorflow


【解决方案1】:

使用两个.split() 和字典理解,第一个.split(', ') 划分整个字符串,第二个split(': ') 划分要转换为keys and values 的列表项

s = "device: 0, name: GeForce GTX 1080 8GB, pci bus id: 0000:01:00.0"
d = {i.split(': ')[0]: i.split(': ')[1] for i in s.split(', ')}
{'device': '0', 'name': 'GeForce GTX 1080 8GB', 'pci bus id': '0000:01:00.0'}

【讨论】:

  • 当你有值数组时失败
【解决方案2】:

首先,您必须用 ', ' (逗号和空格)分隔字符串以分隔字符串中的每个键:值。之后,对于每个带有 'key: value' 的字符串,您必须将其拆分为 ': '(冒号和空格)以分别获取键和值来构建字典。

    dict = {}
    s = "device: 0, name: GeForce GTX 1080 8GB, pci bus id: 0000:01:00.0"

    '''split to separate the main string in 'key: value' substrings'''
    key_value = s.split(", ")

'''each substring is separated in key and value to be appended into dictionary'''

    for v in key_value:
       aux = v.split(": ")
       dict[aux[0]] = aux[1]

    print(dict)

输出:

{'name': 'GeForce GTX 1080 8GB', 'device': '0', 'pci bus id': '0000:01:00.0'}

【讨论】:

  • 在拆分时很好地捕捉到尾随空格
  • 如果我有类似 '{source: s3, prefixFiles: [Tracking_Sent, Tracking_Bounces, Tracking_Opens, Tracking_Clicks, Tracking_SendJobs]') 怎么办
  • @Eduardo Soares 我给你一个 cookie 来表示你的好反应。
猜你喜欢
  • 2022-07-20
  • 2021-11-21
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2012-05-12
相关资源
最近更新 更多