Как преобразовать строку без кавычек в словарь в Python - PullRequest
0 голосов
/ 02 октября 2018

Мне нужно преобразовать строку без кавычек в словарь.

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

'device', 'name' и 'pci bus id' должны быть ключами,

и '0',' GeForce GTX 1080 8GB ',' 0000: 01: 00.0 'должны быть значениями.

Я получаю это от tenorflow.python.client.list_local_devices ()

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Используя два словаря .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'}
0 голосов
/ 02 октября 2018

Во-первых, вы должны разделить строку на ',' (запятая и пробел), чтобы отделить каждое значение ключ: в вашей строке.После этого для каждой строки с ключом: значение необходимо разделить на «:» (двоеточие и пробел), чтобы получить ключ и значение отдельно для построения словаря.

    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'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...