Python:json.load()とjson.loads()での改行の処理

汚れたペンギン

この回答よると、JSON文字列の改行は常にエスケープする必要があります。JSONをでロードする場合、これは必要ないようjson.load()です。

次の文字列をファイルに保存しました:

{'text': 'Hello,\n How are you?'}

JSONをロードしjson.load()ても、\nエスケープされていなくても例外はスローさません

>>> with open('test.json', 'r') as f:
...   json.load(f)
...
{'text': 'Hello,\n How are you?'}

ただし、を使用するjson.loads()と、例外が発生します。

>>> s
'{"text": "Hello,\n How are you?"}'
>>> json.loads(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Python34\lib\json\__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "c:\Python34\lib\json\decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "c:\Python34\lib\json\decoder.py", line 359, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Invalid control character at: line 1 column 17 (char 16)

私の質問:

  1. json.load()自動的にエスケープ\nファイルオブジェクト内の?
  2. \\nJSONが読み取られるかどうかに関係なく、常に実行する必要がありますjson.load()json.loads()
ファビアン

json.load()ファイル記述子からjson.loads()読み取り、文字列から読み取ります。

ファイル内では、\nは改行文字として適切にエンコードされており、文字列には2文字として表示されませんが、正しい空白文字として表示されます。

しかし、文字列内で、ダブルエスケープしない場合\\n、ローダーはそれが制御文字であると見なします。ただし、改行はJSONの制御シーケンスではありません(改行は実際には他の文字と同じです)。

バックスラッシュを2倍にすると、実際には実際の文字列が含ま\nれ、Pythonは\nを改行文字に変換します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

json.loads のタプルの処理

分類Dev

MacとWindowsのPythonでの\ r \ nと\ n改行の処理

分類Dev

ROBOTでのJsonの処理

分類Dev

Pythonでjson.loadsを使用する場合、CSVの非ASCII文字をどのように処理しますか?

分類Dev

JSONの処理

分類Dev

json.load()関数とjson.loads()関数の違いは何ですか

分類Dev

GolangでのJSON継承の処理

分類Dev

YesodでのJSON投稿の処理

分類Dev

JqueryでのJson応答の処理

分類Dev

Python f文字列は、ターミナルとjupyterの間で改行を異なる方法で処理します

分類Dev

Pythonでの大きなJSONデータの処理

分類Dev

PythonでこのJSONファイルを処理する方法は?

分類Dev

ApacheでPythonから複数行のJSONを処理する方法

分類Dev

HTTPPOSTの送信とJSON応答の処理

分類Dev

WebAPIでの例外処理とJSONの返し

分類Dev

Python3.5のjson.loadsとRedis

分類Dev

`json.loads()`と `.apply(json.loads)`の違いは何ですか?

分類Dev

URLクエリの処理(DjangoとJSON)

分類Dev

JSON応答からの抽出と処理

分類Dev

PythonでのJSONの改行区切りJSONへの変換

分類Dev

HTML、JSON応答の処理

分類Dev

JSON API応答の処理

分類Dev

jsonのSpark例外処理

分類Dev

JSON応答の処理ReactNative

分類Dev

Haskell&JSON-nullの処理

分類Dev

Fragment、listView、JSONの処理

分類Dev

JSON応答の処理

分類Dev

JavaのBufferedReaderで改行と空の文字列を処理する

分類Dev

json.dumpsとjson.loadの違いは何ですか?