Простите мой уродливый код newb, я учусь. Я извлекаю данные фильма из API OMDB, но когда я перехожу в CSV, я получаю UnicodeEncodeError для многих фильмов. Вероятно, потому что имена актеров имеют, например, акценты. Я хочу 1.) Определить, какие фильмы являются проблематичными, 2.) пропустить их и/или 3.) предпочтительно исправить ошибку. То, что я в настоящее время просто передает, когда возникает ошибка. Ищете простое исправление, поскольку я новичок.UnicodeEncodeError с csv.writer
import csv
import os
import json
import omdb
movie_list = ['A Good Year', 'A Room with a View', 'Anchorman', 'Amélie', 'Annie Hall', 'Before Sunrise']
data_list = []
textdoc = open('textdoc.txt','w')
for w in movie_list:
x = omdb.request(t=w, fullplot=True, tomatoes=True, r='json')
y = x.content
z = json.loads(y)
data_list.append([z["Title"], z["Year"], z["Actors"], z["Awards"], z["Director"], z["Genre"], z["Metascore"], z["Plot"], z["Rated"], z["Runtime"], z["Writer"], z["imdbID"], z["imdbRating"], z["imdbVotes"], z["tomatoRating"], z["tomatoReviews"], z["tomatoFresh"], z["tomatoRotten"], z["tomatoConsensus"], z["tomatoUserMeter"], z["tomatoUserRating"], z["tomatoUserReviews"]])
try:
with open('Films.csv', 'w') as g:
a = csv.writer(g, delimiter=',')
a.writerow(["Title", "Year", "Actors", "Awards", "Director", "Genre", "Metascore", "Plot", "Rated", "Runtime", "Writer", "imdbID", "imdbRating", "imdbVotes", "tomatoRating", "tomatoReviews", "tomatoFresh", "tomatoRotten", "tomatoConsensus", "tomatoUserMeter", "tomatoUserRating", "tomatoUserReviews"])
a.writerows(data_list)
except UnicodeEncodeError:
print("fail")
просто примечание, если вы сделали 'csv_fields = [" Title "," Year ", .. и т. Д.]', Тогда ваш 'data_list.append' можно было бы упростить до' data_list.append ([z [field] для поле в csv_fields]) 'и заголовки csv просто' a.writerow (csv_fields) ' –