Создание словаря из разделенного пробелом ключа = строки значения в Python - PullRequest
10 голосов
/ 22 января 2011

У меня есть строка следующим образом:

s = 'key1=1234 key2="string with space" key3="SrtingWithoutSpace"'

Я хочу преобразовать в словарь следующим образом:

key  | value
-----|--------  
key1 | 1234
key2 | string with space
key3 | SrtingWithoutSpace

Как мне это сделать в Python?

Ответы [ 2 ]

24 голосов
/ 22 января 2011

Класс shlex облегчает написание лексические анализаторы для простых синтаксисов напоминает оболочку Unix. Это часто будет полезно для написания миниязыки, (например, в бегах управляющие файлы для приложений Python) или для разбора цитируемых строк.

import shlex

s = 'key1=1234 key2="string with space" key3="SrtingWithoutSpace"'

print dict(token.split('=') for token in shlex.split(s))
16 голосов
/ 22 января 2011

Попробуйте:

>>> import re
>>> dict(re.findall(r'(\S+)=(".*?"|\S+)', s))
{'key3': '"SrtingWithoutSpace"', 'key2': '"string with space"', 'key1': '1234'}

Если вы также хотите удалить кавычки:

>>> {k:v.strip('"') for k,v in re.findall(r'(\S+)=(".*?"|\S+)', s)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...