Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 23, 2011 16:20:59

wghost
От:
Зарегистрирован: 2011-09-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

Есть данные в формате:
print data
отдает

key1=value1
key2=value2
а нужно:
{'key1': 'value1', 'key2': 'value2'}



Отредактировано (Дек. 23, 2011 16:21:37)

Офлайн

#2 Дек. 23, 2011 17:01:27

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

a = data[0]
b = dict(map(lambda x: x.split('='), a.split()))
print b

Офлайн

#3 Дек. 23, 2011 19:31:03

wghost
От:
Зарегистрирован: 2011-09-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

s0rg
a = data[0]
b = dict(map(lambda x: x.split('='), a.split()))
print b
Спасибо.
Вылезла проблема. В одном из значений value есть знаки =. Сразу этого не заметил( Видимо это причина ошибки:
    b = dict(map(lambda x: x.split('='), a.split()))
ValueError: dictionary update sequence element #0 has length 4; 2 is required
Можно игнорировать все знаки равенства в ‘value’? В ‘key’ их быть не может…
Или другое решение?



Офлайн

#4 Дек. 23, 2011 19:37:19

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

dict(map(lambda x: x.split('=', 1), a.split()))

Офлайн

#5 Дек. 23, 2011 20:12:46

wghost
От:
Зарегистрирован: 2011-09-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

s0rg
dict(map(lambda x: x.split('=', 1), a.split()))
Да, так отработало.
Отдает:
{'key1': 'value1'}
{'key2': 'value2'}
А как лучше объединить в:
{'key1': 'value1', 'key2': 'value2'}
?
Чтобы не выдавало ошибку если вдруг будет только одна сторока:
{'key1': 'value1'}



Офлайн

#6 Дек. 23, 2011 21:14:01

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

[{c[0]: c[1]} for c in map(lambda x: x.split('=', 1), a.split())]

Офлайн

#7 Дек. 23, 2011 21:46:47

wghost
От:
Зарегистрирован: 2011-09-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

s0rg
[{c[0]: c[1]} for c in map(lambda x: x.split('=', 1), a.split())]
Не уверен, что правильно понял, но:
a = data[0]
b = [{c[0]: c[1]} for c in map(lambda x: x.split('=', 1), a.split())]
print b
Отдает:
[{'key1': 'value1'}]
[{'key2': 'value2'}]
П.С. Бесполезно мучаю join() с этой задачей?



Офлайн

#8 Дек. 23, 2011 22:06:22

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

странно:

In [18]: a
Out[18]: 'key1=value1\nkey2=value2'

In [19]: [{c[0]: c[1]} for c in map(lambda x: x.split('=', 1), a.split())]
Out[19]: [{'key1': 'value1'}, {'key2': 'value2'}]

Офлайн

#9 Дек. 23, 2011 22:12:31

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

dict(c.split('=',1) for c in a.split())



Офлайн

#10 Дек. 24, 2011 00:20:16

wghost
От:
Зарегистрирован: 2011-09-02
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите пожалуйста с преобразованием строк

s0rg
странно:
In [18]: a
Out[18]: 'key1=value1\nkey2=value2'

In [19]: [{c[0]: c[1]} for c in map(lambda x: x.split('=', 1), a.split())]
Out[19]: [{'key1': 'value1'}, {'key2': 'value2'}]
Ну здесь вроде тоже вывод разделен фигурными скобками. У меня вместо запятых между скобками выводит перенос строки… (Python 2.6.6, linux.) А требуется:

{'key1': 'value1', 'key2': 'value2'}
единой строкой… т.е. всеже join()?…



Отредактировано (Дек. 24, 2011 00:24:24)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version