如何在Python中将不带引号的字符串转换为字典

时间:2018-10-02 16:18:04

标签: python string dictionary tensorflow

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

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()

获得的

2 个答案:

答案 0 :(得分:3)

首先,您必须将字符串用','(逗号和空格)分隔,以分隔字符串中的每个key:值。然后,对于每个带有'key:value'的字符串,必须将其拆分为':'(冒号和空格)以分别获取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'}

答案 1 :(得分:0)

使用两个.split() dictionary理解,第一个.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'}