2017-12-05 7 views
0

json 파일에서 csv 파일로 데이터를 변환하려고합니다. Python 2.7 UnicodeEncodeError csv.writer

with open('data.json') as data_file:  
     x = json.load(data_file) 

    g = csv.writer(open("output.csv", "wb+")) 
    g.writerow(["name", "price", "1 star", "2 star", "3 star", "4 star", "5 star", "review_author", "review_comment_count", "review_header", 
     "review_posted_date", "review_rating", "review_text", "url"].encode('utf-8')) 

    for x in x: 
     for i in range(len(x["reviews"])): 
      g.writerow([x["name"], 
       x["price"], 
       x["ratings"]["1 star"], 
       x["ratings"]["2 star"], 
       x["ratings"]["3 star"], 
       x["ratings"]["4 star"], 
       x["ratings"]["5 star"], 
       x["reviews"][i]["review_author"], 
       x["reviews"][i]["review_comment_count"], 
       x["reviews"][i]["review_header"], 
       x["reviews"][i]["review_posted_date"], 
       x["reviews"][i]["review_rating"], 
       x["reviews"][i]["review_text"], 
       x["url"]]) 

은 내가 CSV는 해당 데이터와 같은 행의 모든 ​​열 (가격, 1 등급, 2 등급, 등)와 파일을 얻을 것으로 기대합니다.

역 추적 (마지막으로 가장 최근 통화) :

대신 내가 오류 얻을 파일 "scraper5.py", 라인 (162), ReadAsin()에서를 파일 "scraper5.py", 라인 159에UnicodeEncodeError : 'ascii'코덱은 377 위치의 문자 'u2019'를 인코딩 할 수 없습니다. 서수는 범위 내에 없습니다 (128)

만약 내가 159 번째 행에 주석 달기 x [ "reviews"] [i] [ "review_text"]에 대해서도 같은 오류가 발생합니다. 이전 질문을 여기에서 찾아 보았지만 해결 방법 중 아무 것도 작동하지 않는 것 같습니다. 이 문제를 해결하는 방법에 대한 제안이 있으십니까?

답변

0

json 파일에 ASCII가 아닌 일부 chars.And가 포함되어있어 스크립트가 작동하지 않습니다. 시스템 기본 인코딩 char-set ascii가 범위를 벗어났습니다 (128). 역 추적 (마지막으로 가장 최근 통화) :

나는 여전히 같은 오류가

g.writerow([x["name"].encode('utf8'), 
      x["reviews"][i]["review_author"].encode('utf8'), 
      x["reviews"][i]["review_comment_count"].encode('utf8') 
      x["url"].encode('utf8')]) 
+0

처럼 파일로 출력에 모든 라인을 명시 적으로 인코딩에 희망을 시도 파일 "scraper5.py " ReadAsin()에서 라인 162 파일", "[URL '인 코드 ('UTF8 ')]) UnicodeEncodeError X ReadAsin에서, 라인 (159),"scraper5.py :.'ASCII '코덱 못해 문자 'u2019'를 위치 377로 인코딩 : 서수가 범위 내에 없음 (128) –