2017-07-14 19 views
0

私はコードを実行するとPythonを初めて使用しているときにエラーが発生します。Pythonの解析機能でエラーが発生しました

このAmazonデータセットは、JSONファイル (json形式については下記を参照してください)としてフォーマットされています。

{ 
    "reviewerID": "A2SUAM1J3GNN3B", 
    "asin": "0000013714", 
    "reviewerName": "J. McDonald", 
    "helpful": [2, 3], 
    "reviewText": "I bought this for my husband who plays the piano. He is 
having a wonderful time playing these old hymns. The music is at times 
hard to read because we think the book was published for singing from more 
than playing from. Great purchase though!", 
    "overall": 5.0, 
    "summary": "Heavenly Highway Hymns", 
    "unixReviewTime": 1252800000, 
    "reviewTime": "09 13, 2009" 
} 

私が使用しているコマンドは、「厳密JSON」ファイル(元のJSONファイルは、データ送信者に基づいて厳密JSONではない)に上方JSONファイルを変換する、データ送信者によって提供されます。

次のようにそれらが提供するコマンドがある:\ Users \ユーザーデイジー\研究:私は引用符でJSONファイル(例えば、「Cのディレクトリを入れて、パスを変更した

import json 
import gzip 

def parse(path): 
    g = gzip.open(path, 'r') 
    for l in g: 
    yield json.dumps(eval(l)) 

f = open("output.strict", 'w') 
for l in parse("reviews_Video_Games.json.gz"): 
    f.write(l + '\n') 

\アマゾン\ reviews_Video_Games.json.gz ")たとえば

\研究は、私が走ったコードは次のようになります。

import json 
import gzip 

def parse(C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz): 
    g = gzip.open(C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz, 'r') 
    for l in g: 
    yield json.dumps(eval(l)) 

f = open("output.strict", 'w') 
for l in parse("reviews_Video_Games.json.gz"): 
    f.write(l + '\n') 

をしかし、私は次のエラーを取得する:

C:\Users\daisy\AppData\Local\Programs\Python\Python36-32>python C:\Users\daisy\AppData\Local\Programs\Python\strict_json.py 
    File "C:\Users\daisy\AppData\Local\Programs\Python\strict_json.py", line 4 
def parse("C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz"): 
                       ^
SyntaxError: invalid syntax 

構文に間違いがありますか?

また、元のコードはデータ送信者によって指定されていますので、コードが正しいと確信しています。私は私のファイルディレクトリに 'パス'を変更したときに何か間違ったことをしたと思う。

ありがとうございます。

+0

を符号化するために、 'defの解析(C:\ Users \ユーザーデイジー\研究\ study \ Amazon \ reviews_Video_Games.json.gz): '?? –

+0

この関数はそのまま使用することを意図していました。 'path'は関数を呼び出すときに指定するパラメータであり、関数定義自体で変更するものではありません。 – jasonharper

+0

それはどのように動作しません。関数をコールしたときに値を代入する必要があります。つまり、 'for I in parse(r" C:\ Users \ daisy \ Research \ study \ Amazon \ reviews_Video_Games.json.gz ")です。 '' ... ''とし、それを' '生の文字列にするほうが良い。 –

答えて

0

このような関数を定義することはできません。あなたがそのようなデフォルト値を設定できますが

def parse(file_path): 
    g = gzip.open(file_path, 'r') 
    for l in g: 
    yield json.dumps(eval(l)) 

parse(r"C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz") 

def parse(file_path=r"C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz"): 
    g = gzip.open(file_path, 'r') 
    for l in g: 
    yield json.dumps(eval(l)) 

parse() 

更新問題

>>> "C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz" 
    File "<stdin>", line 1 
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 
>>> "C:\\Users\\daisy\\Research\\study\\Amazon\\reviews_Video_Games.json.gz" 
'C:\\Users\\daisy\\Research\\study\\Amazon\\reviews_Video_Games.json.gz' 
>>> r"C:\Users\daisy\Research\study\Amazon\reviews_Video_Games.json.gz" 
'C:\\Users\\daisy\\Research\\study\\Amazon\\reviews_Video_Games.json.gz' 
+0

ありがとう、Ipiner。私は2番目のコードを実行しましたが、以下のようなエラーがあります。これは 'SyntaxError :(unicode error)'です。unicodeescape 'コーデックは2-3の位置でバイトをデコードできません:切り詰められた\ UXXXXXXXXエスケープ'。これを修正する方法はありますか? – Emily

+0

今後、元の質問を残して、回答を古いものにしないように新しいコンテンツを追加してください。あなたの新しいエラーはエンコーディングの問題です。バックスラッシュをエスケープしたり、文字列をr 'r" C:\ Users \ daisy \ Research \ study \ Amazon \ reviews_Video_Games.json.gz " – lpiner

関連する問題