JSONP предназначен для использования функцией обратного вызова JavaScript. В Python нет безопасного и простого способа разобрать его. И эти данные JSONP кажутся мне немного странными, поскольку ключи являются именами переменных, а не строками.
В любом случае, если вы чувствуете себя безрассудно, вы могли сделать это:
#! /usr/bin/env python
import re
datastr = '''
I = {
t: '2015/02/02 16:01',
c: '207.05',
v: '484.74',
n: '324.37'
}
'''
def main():
pat = re.compile(r'([a-z]+):')
exec pat.sub(r"'\1':", datastr)
print I, I['v']
if __name__ == '__main__':
main()
выход
{'c': '207.05', 'n': '324.37', 't': '2015/02/02 16:01', 'v': '484.74'} 484.74
Приведенный выше код использует регулярное выражение процитировать ключи преобразования их в правильные строки, чтобы данные соответствовали синтаксису Python dict
и затем использовали exec
для создания dict
.
Обратите внимание, что использование данных exec
или eval
по данным, которые вы не контролируете, является опасной практикой. См. Eval really is dangerous by Stack Overflow stalwart Ned Batchelder.
Поскольку формат изменен, вот как выглядят фактические данные: http://pastebin.com/3BfzzYnm –
Это очень трудно понять, не зная правил формата (например, всегда будет 4 символа перед открытием { литься?) и как часто этот формат будет изменяться. В основном это то, что WSDL были изобретены для: описания и правил управления версиями, и без чего-то подобного вам нужно задать те же вопросы, что и любой, кто построил интерфейс. –