Python処理JSON時の値エラーと符号化エラーの2つの解決実録
1375 ワード
1、ValueError:Invalid control character at:line 1 column 8363(char 8362)jsonを使用する.loads(json_data)の場合、次のように表示されます.
エラーの原因は、文字列に戻り文字(r)または改行文字()が含まれているためです.(1)これらの文字をエスケープするには、次のようにします.
(2)キーワードstrictの使用:
strictのデフォルトはTrueで、内部文字列を厳格に制御し、Falseに設定すると、rを許可します.
2、UnicodeEncodeError:ascii codec can't encodeエラーwindowsで書いたpythonスクリプトをlinuxで実行し、直接報告する:
エラーの原因はPython 2です.7インストール時、デフォルトの符号化はasciiであり、プログラム中に非ascii符号化が発生した場合、Pythonの処理はしばしばこのようなエラーを報告するが、Python 3ではこのような問題はない.
解決方法:
(1)一時的解決方法:コードの前に加入する:
(2)一労永逸:Pythonのlibsite-packagesフォルダの下にsitecustomize.pyを新規作成します.内容は以下の通りです.
そうすると、システムはPythonが起動したときに、自分でファイルを呼び出し、システムのデフォルトコードを設定します.
ValueError: Invalid control character at: line 1 column 8363 (char 8362)
エラーの原因は、文字列に戻り文字(r)または改行文字()が含まれているためです.(1)これらの文字をエスケープするには、次のようにします.
json_data = json_data.replace('\r', '\\r').replace('
', '\
')
(2)キーワードstrictの使用:
json.loads(json_data, strict=False)
strictのデフォルトはTrueで、内部文字列を厳格に制御し、Falseに設定すると、rを許可します.
2、UnicodeEncodeError:ascii codec can't encodeエラーwindowsで書いたpythonスクリプトをlinuxで実行し、直接報告する:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
エラーの原因はPython 2です.7インストール時、デフォルトの符号化はasciiであり、プログラム中に非ascii符号化が発生した場合、Pythonの処理はしばしばこのようなエラーを報告するが、Python 3ではこのような問題はない.
解決方法:
(1)一時的解決方法:コードの前に加入する:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
(2)一労永逸:Pythonのlibsite-packagesフォルダの下にsitecustomize.pyを新規作成します.内容は以下の通りです.
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
そうすると、システムはPythonが起動したときに、自分でファイルを呼び出し、システムのデフォルトコードを設定します.