Python читает многострочный JSON

Я пытаюсь использовать JSON для хранения настроек для программы. Я не могу заставить Python 2.6 расшифровывать JSON-декодер для декодирования многострочных строк JSON …

Вот пример ввода:

.settings file: """ {\ 'user':'username',\ 'password':'passwd',\ }\ """ 

Я попробовал пару других синтаксисов для этого файла, которые я укажу ниже (с учетом их трассировки).

Мой код python для чтения файла в

 import json settings_text = open(".settings", "r").read() settings = json.loads(settings_text) 

Трассировка для этого:

 Traceback (most recent call last): File "json_test.py", line 4, in <module> print json.loads(text) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 322, in decode raise ValueError(errmsg("Extra data", s, end, len(s))) ValueError: Extra data: line 1 column 2 - line 7 column 1 (char 2 - 41) 

Я предполагаю, что «Дополнительные данные» – это тройная кавычка.

Вот другие синтаксисы, которые я пробовал для файла .settings, с их соответствующими Tracebacks:

 "{\ 'user':'username',\ 'pass':'passwd'\ }" Traceback (most recent call last): File "json_test.py", line 4, in <module> print json.loads(text) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 319, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 336, in raw_decode obj, end = self._scanner.iterscan(s, **kw).next() File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/scanner.py", line 55, in iterscan rval, next_pos = action(m, context) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 155, in JSONString return scanstring(match.string, match.end(), encoding, strict) ValueError: Invalid \escape: line 1 column 2 (char 2) '{\ "user":"username",\ "pass":"passwd",\ }' Traceback (most recent call last): File "json_test.py", line 4, in <module> print json.loads(text) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads return _default_decoder.decode(s) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 319, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 338, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded 

Если я поместил все настройки в одну строку, он будет декодировать.

3 Solutions collect form web for “Python читает многострочный JSON”

Избавьтесь от всех обратных косых черт и всех «Pythonic», указанных в файле настроек. Отлично работает, если файл просто:

 { "user":"username", "password":"passwd" } 

Заметим также, что строки JSON цитируются с двойными кавычками, а не одинарные кавычки. См. Здесь спецификацию JSON:

http://www.json.org/

 >>> s = """ { "user":"username", "password":"passwd" } """ >>> json.loads(s) {'password': 'passwd', 'user': 'username'} 

json не считает символ \ продолжением строки.

Попробуйте использовать eval (s)

s = "" "{\ 'user': 'username', \ 'password': 'passwd', \ \" ""

сс = Eval (д)

qq {'password': 'passwd', 'user': 'username'}

тип (qq) dict

  • Как преобразовать данные JSON в объект Python
  • Python - dump dict как строка json
  • KeyError в консоли, но ключ существует, и функция работает нормально
  • Вставка JSON в MySQL с использованием Python
  • Обработка ошибок в Python с помощью JSON и словаря
  • Устранение неполадок объекта JSON в Python
  • Как разбить элементы серии pandas и поместить их в формат JSON?
  • Индексы списка Python и JSON - TypeError должны быть целыми, а не str
  •  
    Interesting Posts for Van-Lav

    Запрошенные модули недоступны: vtkRenderingOpenGL-cmake / OpenCVDetectVTK.cmake: 6 (find_package)

    Как я могу построить фрейм данных с датой в качестве имени столбца и времени в виде строки?

    структура проекта для переноса многих классов c ++ в cython на один общий объект

    как вы создаете прогноз линейной регрессии по данным временных рядов в python

    Почему Python не оценивает арифметику с постоянными номерами до компиляции в байт-код?

    Глобальные переменные функции Python?

    Нет модуля с именем http_client error при попытке запустить django с django rest framework

    Ковариация с колонками

    Наложение числового значения медианы / дисперсии в ящиках

    Найти уникальные значения в кадре данных Pandas, независимо от расположения строк или столбцов

    Диапазон в виде словарного ключа в Python

    Куки-файлы Python Scrapy не работают, но работают в PHP cURL-коде

    если еще в понимании списка

    Объединение двух одномерных массивов NumPy

    Можно ли объединить два декоратора в один на Python?

    Python - лучший язык программирования в мире.