外部サービスから大きなデータファイルを取得しています。各行はjsonオブジェクトです。しかし、それは(\のXeF、\ XA0、\ xa9)などのような複数の六角文字と(\ u2022).Iは基本的に私はエンコーディングUTF-8を与えてみましたinvaildエスケープ文字でJSONの読み込みに失敗する
with open(filename,'r') as fh:
for line in fh:
attr = json.loads(line)
のようなファイルを読んでいるようないくつかのUnicode文字が含まれていますopenメソッドにlatin-1を渡しますが、まだjsonのロードは失敗しています。無効な文字が削除された場合、読み込み中ですが、データを失うことはありません。これを修正するための推奨方法は何ですか?
のrepr(ライン)サンプル:
'{"product_type":"SHOES","recommended_browse_nodes":"361208011","item_name":["Citygate 960561 Ankle Boots Womens Gray Grau (anthrazit 9) Size: 8 (42 EU)"],"product_description":[],"brand_name":"Citygate","manufacturer":"J H P\\xf6lking GmbH & Co KG","bullet_point":[],"department_name":"Women\\u2019s","size_name":"42 EU","material_composition":["Leather"]}\n'
json.loadsが無効\エスケープとITEM_NAMEに\ XF6に失敗している:行1列105(チャー104)。
あなたのファイルが有効なJSONであるかそうでないのいずれか。適切なサンプルを提供できますか? '\ u2022'は有効なJSON構文です。 '\ xef'でリテラルテキスト*がある場合、それは有効なJSONではありません。これらがバイトの場合は、その行の 'repr()'出力を使用してください。 –
@MartijnPietersサンプルとエラーが追加されました。 – Stormbringer
これは1行ではなく、 'repr()'の出力でもありません。このように '\ xa0'がシングルバイトか4個の別個の文字かどうかは判断できません。 –