Преобразование строки в словарь

Есть строка по типу a = '# Игрок Ранг Статус 1 Lenny_Bezkurov X Сейчас играет 2 Mike_Deporto X Не в игре 3 Shon_Blake...' и так далее. Можно ли каким либо способом получить из подобной строки словарь? по типу {'#': '1', 'Игрок': 'Mike_Deporto' ...}


Ответы (1 шт):

Автор решения: Andy Pavlov

В целом через регулярные выражения можно попробовать вытащить данные через re.findall.

Первыми вытаскиваем ключи keys по маске, потом данные по игрокам finds. Потом объединяем все в список словарей comb.

import re

a = '# Игрок Ранг Статус 1 Lenny_Bezkurov X Сейчас играет 2 Mike_Deporto X Не в игре'
keys = re.findall('^(\S) ([\w]+) ([\w]+) ([\w]+)', a)
finds = re.findall('([\d]+) ([\w]+) ([\w]+) ([\s\D]+)', a)

comb = [dict(zip(*keys, f)) for f in finds]
print(*comb, sep='\n')

Вывод:

{'#': '1', 'Игрок': 'Lenny_Bezkurov', 'Ранг': 'X', 'Статус': 'Сейчас играет '}
{'#': '2', 'Игрок': 'Mike_Deporto', 'Ранг': 'X', 'Статус': 'Не в игре'}
→ Ссылка