Entschuldigung mein hässlicher Newb-Code, ich lerne. Ich ziehe Filmdaten aus der OMDB API, aber wenn ich sie in CSV verschiebe, bekomme ich UnicodeEncodeError für viele Filme. Wahrscheinlich weil Schauspieler Namen Akzente haben, zum Beispiel. Ich möchte 1.) identifizieren, welche Filme problematisch sind, 2.) sie überspringen und/oder 3.) vorzugsweise den Fehler korrigieren. Was ich gerade habe passiert gerade die ganze Sache wenn ein Fehler auftritt. Auf der Suche nach einer einfachen Lösung, da ich Anfänger bin.UnicodeEncodeError mit 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")
nur ein Hinweis, wenn Sie 'csv_fields = [" Titel "," Jahr ", .. etc.]' dann könnte Ihre 'data_list.append' vereinfacht werden zu' data_list.append ([z [Feld] für Feld in csv_fields]) 'und die csv-Header nur' a.writerow (csv_fields) ' –