Найти - Пользователи
Полная версия: преобразование строки в словарь?
Начало » Python для новичков » преобразование строки в словарь?
1 2
gelius
Как из строки:
Accept-Language = pl,en-us;q=0.7,en;q=0.3
сделать словарь?
Вроде ак:
s = dict([a.split('=', 1) for a in s])
Но не выходит:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
den4ik
Первое. У тебя два параметра одинаковый ключ имеют.
q=0.7,en;q=0.3
Второе. Нужно сначала разделить по точке с запятой. Потом уже по знаку равно.
gelius
А зачем по точке с запятой?
“pl,en-us;q=0.7,en;q=0.3” - единое значение. делить его не нужно.
den4ik
Если
s = "Accept-Language = pl,en-us;q=0.7,en;q=0.3"
то работать не будет, так как
s = dict([a.split('=', 1) for a in s])
просто проходит по каждому символу в s.
Shaman
Accept-Language: da, en-gb;q=0.8, en;q=0.7
http://seolab.ru/add/rfc2068/154.html
ajib6ept
In [1]: s = 'Accept-Language = pl,en-us;q=0.7,en;q=0.3'
In [2]: dict(item.split(" = ") for item in s.split('\n'))
Out[2]: {'Accept-Language': 'pl,en-us;q=0.7,en;q=0.3'}
gelius
s = "Accept-Language = pl"
тоже пробовал
Результат:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
gelius
Да
In [1]: s = 'Accept-Language = pl,en-us;q=0.7,en;q=0.3'
In [2]: dict(item.split(" = ") for item in s.split('\n'))
Out[2]: {'Accept-Language': 'pl,en-us;q=0.7,en;q=0.3'}
отработало.
Не осознал почему дописывает ‘\r’:
{'Accept-Language': 'pl,en-us;q=0.7,en;q=0.3\r'}
ajib6ept
Кажется в Windows если считываем построчно файл, то он в конце прописывает \r\n
gelius
Питон у меня под linux.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB