Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 22, 2014 19:43:08

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Как из строки:

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

Офлайн

#2 Авг. 22, 2014 21:00:38

den4ik
Зарегистрирован: 2014-07-20
Сообщения: 59
Репутация: +  4  -
Профиль   Отправить e-mail  

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

Первое. У тебя два параметра одинаковый ключ имеют.

q=0.7,en;q=0.3
Второе. Нужно сначала разделить по точке с запятой. Потом уже по знаку равно.

Отредактировано den4ik (Авг. 22, 2014 21:03:58)

Офлайн

#3 Авг. 23, 2014 20:01:26

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

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

А зачем по точке с запятой?
“pl,en-us;q=0.7,en;q=0.3” - единое значение. делить его не нужно.

Офлайн

#4 Авг. 23, 2014 20:16:34

den4ik
Зарегистрирован: 2014-07-20
Сообщения: 59
Репутация: +  4  -
Профиль   Отправить e-mail  

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

Если

s = "Accept-Language = pl,en-us;q=0.7,en;q=0.3"
то работать не будет, так как
s = dict([a.split('=', 1) for a in s])
просто проходит по каждому символу в s.

Отредактировано den4ik (Авг. 23, 2014 20:16:49)

Офлайн

#5 Авг. 23, 2014 20:30:11

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

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

Accept-Language: da, en-gb;q=0.8, en;q=0.7
http://seolab.ru/add/rfc2068/154.html

Офлайн

#6 Авг. 23, 2014 20:34:54

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

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

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'}



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#7 Авг. 23, 2014 20:36:29

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

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

s = "Accept-Language = pl"
тоже пробовал
Результат:
ValueError: dictionary update sequence element #0 has length 1; 2 is required

Офлайн

#8 Авг. 23, 2014 20:52:01

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Да

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'}

Офлайн

#9 Авг. 23, 2014 21:06:12

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

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

Кажется в Windows если считываем построчно файл, то он в конце прописывает \r\n



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#10 Авг. 23, 2014 21:11:03

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Питон у меня под linux.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version