簡體   English   中英

Python 2.7 csv.writer的UnicodeEncodeError

[英]UnicodeEncodeError with Python 2.7 csv.writer

我正在嘗試將數據從json文件轉換為csv文件。

    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"]])

我希望得到一個包含所有列(價格,1星,2星等)的CSV文件,並以行作為相應數據。

相反,我得到一個錯誤:

追溯(最近一次通話最近):ReadAsin()中的文件“ scraper5.py”,第162行,ReadAsin x [“ url”]中的文件“ scraper5.py”,行159 x。“ encode('utf8')]))UnicodeEncodeError :'ascii'編解碼器無法在位置377處編碼字符u'\\ u2019':序數不在范圍內(128)

如果我注釋掉第159行,則x [“ reviews”] [i] [“ review_text”]會出現相同的錯誤。 我已經在這里查詢了以前的問題,但是所有解決方案似乎都無效。 有關如何解決此問題的任何建議?

您的腳本失敗,因為json文件包含一些非ascii字符,並且系統默認編碼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')])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM