2015-02-20 2 views
2
val = "{t:30, f:50}" 

- это строковое значение, и мне нужно преобразовать его в словарь, отличный от обычного метода использования val.split (','), а затем удалить скобки и вынуть ключ и связать значение для него и преобразовать его в словаре. Может ли кто-нибудь предложить какой-либо лучший подход к нему. PLz заботится о том, чтобы даже кавычек в строках в ключах (t и s) не содержалось. Получил некоторые значения из db. Уже пробовал загрузки json или дампы.преобразовать строковое значение в словарь из маринованного

+0

, что случилось с «обычным» способом с использованием раскола()? – shx2

+0

не слишком умен, как я уже сказал, что после разделения тоже нужно выполнить несколько шагов. как снятие скобок с клавиш и еще несколько, как указано – kid

+0

Поскольку формат не является стандартным (например, он не является допустимым json), я не вижу возможности самостоятельно писать парсер, например. используя split() – shx2

ответ

4
import re 
x="{t:30, f:50}" 
y=re.findall(r"([^ {,]*):([^ {,]*)[,}]",x) 
print dict(y) 

Попробуйте это. Простой и сделанный в один или два шага.

+0

получил это я не пробовал регулярные выражения спасибо @vks – kid

1
import re 
val = "{t:30, f:50}" 
t = re.search("[^{].*[^}]",val).group() 
print (t) 
z = t.split(",") 
print (z) 
mydict = {} 
mydict[z[0][0]]=z[0][2]+z[0][3] 
print (mydict) 

>>> 
t:30, f:50 
['t:30', ' f:50'] 
{'t': '30'} 
>>> 

Используйте search() метод re модуля

+1

спасибо GLHF за ответ – kid