Преобразование строки в словарь
Есть строка по типу 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', 'Статус': 'Не в игре'}