2017-10-15 15 views
1

pythonでユーザーとパスワードのjsonファイルを読み込んで、認証を使用してurlからjsonデータを抽出する残りのapiからデータを取得する際に問題が発生しました。ValueError:無効なエスケープがファイルからjsonをロードできない

Traceback (most recent call last): 
    File "C:/Python27/Script.py", line 10, in <module> 
    config = json.load(config_file) 
    File "C:\Python27\lib\json\__init__.py", line 290, in load 
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) 
    File "C:\Python27\lib\json\__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "C:\Python27\lib\json\decoder.py", line 364, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Python27\lib\json\decoder.py", line 380, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Invalid \escape: line 7 column 42 (char 270) 

これはコードです::

import urllib2 
import json 

#Load the config file 
with open('Config.json') as config_file :  
    config = json.load(config_file) 
# Load your username from the config file 
user = config['user'] 
# Load your password from the config file 
password = config['password'] 

enter code here 
私はそれがJSONのlibaryに私は、このエラーを与えるJSONファイルにユーザー、パスワード、およびURIを入れて、スクリプトを実行している

それはサンプルをロードし、そこからJSONファイルはここにある:

{ 
    "user" : "api", 
    "password" : "admin1234", 
    "uri": "https://datafeeds.emailsecurity.com/test", 
    "resetUri": "https://datafeeds.emailsecurity.com/test/test?reset=2017-07-01T00:00:00Z", 
    "files" : { 
     "cookiesFilePath" : "C:\\abc", 
     "logsFilePath" : "C:\\abc", 
    } 
} 
+0

これは奇妙です。 'Invalid \ escape'エラーは出ませんが、' 'logsFilePath": "C:\\ abc"、 ''の最後に 'ValueError:Expecting property name'があります。 JSONはPythonではなく、リストやオブジェクトの末尾にカンマをつけることはできません(Pythonディクテーションに相当)。一度修正すれば、データはPython 2.6.6とPython 3.6.0でうまくロードされます –

答えて

0

データファイルが無効なJSONが含まれています:

>>> json.loads('{"cookiesFilePath": "C:\\abc"}') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module>                         
    ...                        
ValueError: Invalid \escape: line 1 column 24 (char 23) 

問題は"c:\\abc"文字列です。 jsonデコーダはダブルバックスラッシュをエスケープされた単一のバックスラッシュとして解釈し、コロンの後の文字を'\a'とします。これは有効ではありませんjson。

標準のPythonのJSONエンコーダーを使用して、あなたの例では、JSONを生成することはできません:ファイル内のJSONが壊れツールを使用して作成した、または手動で編集されていることを示唆している

>>> json.dumps({"cookiesFilePath": "C:\abc"})                    
'{"cookiesFilePath": "C:\\u0007bc"}'                         
>>> json.dumps({"cookiesFilePath": "C:\\abc"})                 
'{"cookiesFilePath": "C:\\\\abc"}' 

+0

hello snakeは、この問題を解決するために使用できるPythonの他のモジュールを示唆できますか?あなたが言及した方法を試してみてください –

+0

- 有効なJSONを生成するように入力データを生成するものを修正する必要があります。 – snakecharmerb

関連する問題