2016-08-13 4 views
0

私は今、私は、ファイルを読み込むしようとしていますので、dictsのリストに変換無効なエスケープ()、のpython 2.7

[{"key1": "value1", "key2": "value2"},{},{}] 

としてテキストファイルにjsonsのリストを持っています私は、反復処理し、コードを使用して、これらのキーと値のペアを使用することができます - 私はそれがかもしれないと思う

ValueError: Invalid \escape: line 1 column 2005707 (char 2005706) 

-

with open('./file.txt') as f: 
    listOfDict= json.load(f) 

私はエラーを取得していますいくつかの値は〜 のようなものですから。 {"key1": "ENERGIZER \ xc2"}

このファイルへの書き込み中にtext.encode( "utf-8")を使用するのを忘れました。 代わりに、ファイルに書き込み中にstr(text)を使用しました。

これがこのエラーの原因であり、この問題を解決する方法はありますか。

+0

はこのPythonの2または3でありますか? – dangom

+0

@DanielG Python 2.7 – sagar

答えて

0

これで、エスケープとデコードのための少しの文字列操作が必要です。

データにエスケープされたUnicodeまたはエスケープされた8ビット文字セット(latin1またはcp1252など)が含まれているかどうかによって異なります。あなたは、あなたのデータのために何が効果的であるかを実験する必要があります。

それはあなたが簡単に行うことができますUnicodeをエスケープしています場合:

import io 
with io.open('./file.txt', 'r', encoding='unicode_escape') as f: 
    listOfDict= json.load(f) 

エスケープの8bit 'latin1の' の場合、あなたは何をする必要があります:

with open('./file.txt', 'r') as f: 
    # read, convert escape to byte, convert bytes as 'latin1' 
    decoded_json = f.read().decode('string_escape').decode('latin1') 
    listOfDict = json.loads(decoded_json) # Note the "s". 
+0

str.decode( 'string_escape')関数は何をしますか?私はテキストファイルに "https://"のようなURLをつけているので、それらにも影響します。これらのエラーが出ているので、テキストファイルを保存していたときに私が逃したものも教えてください。 – sagar

+0

'string_escape'はバックスラッシュだけで動作します。 'text.encode(" utf-8 ")'はあなたのデータを修正していないでしょう - それ以外のものは遊んでいます - 誤って文字列の 'repr()'を保存したでしょう –

関連する問題