2016-07-21 6 views
1

ich eine Codierung Problem habe, wenn ich mein Skript ausführen unten: Hier ist der Fehlercode: -UnicodeEncodeError: ‚ascii‘ Codec nicht Zeichen kodieren, können u ‚\ xe9‘ in Position 9: Ordnungszahl nicht in Reichweite (128)Python Encoding Problem mit JSON und CSV

Hier ist mein Skript:

import logging 
import urllib 
import csv 
import json 
import io 
import codecs 

with open('/home/local/apple.csv', 
      'rb') as csvinput: 
    reader = csv.reader(csvinput, delimiter=',') 
    firstline = True 
    for row in reader: 
     if firstline: 
      firstline = False 
      continue 

     address1 = row[0] 
     print row[0] 
     locality = row[1] 
     admin_area = row[2] 
     query = ' '.join(str(x) for x in (address1, locality, admin_area)) 
     normalized = query.replace(" ", "+") 
     BaseURL = 'http://localhost:8080/verify?country=JP&freeform=' 
     URL = BaseURL + normalized 
     print URL 
     data = urllib.urlopen(URL) 
     response = data.getcode() 
    print response 

     if response == 200: 
      file= json.load(data) 
     print file 
     output_f=open('output.csv','wb') 
     csvwriter=csv.writer(output_f) 
      count = 0 
      for f in file: 
     if count == 0: 
      header= f.keys() 
      csvwriter.writerow(header) 
      count += 1 
     csvwriter.writerow(f.values()) 
     output_f.close() 
     else: 
      print 'error' 

kann mir jemand helfen, diese seine zu beheben bekommen wirklich ärgerlich. Ich muss utf8 kodieren

Antwort

1

Sieht aus, als ob Sie Python 2.x verwenden, anstelle von Pythons Standard öffnen, verwenden Sie codecs.open, wo Sie optional eine Codierung übergeben können und was zu tun ist, wenn es Fehler gibt. Ruft etwas weniger Verwirrung in Python 3 auf, wo das Standard-Python-Öffnen dies tun kann.

Also in Ihren zwei Linien, wo Sie öffnen, tun:

with codecs.open('/home/local/apple.csv', 
     'rb', 'utf-8') as csvinput: 

output_f = codecs.open('output.csv','wb', 'utf-8') 

Die optionalen Fehler Parm standardmäßig auf „strenge“, das eine Ausnahme auslöst, wenn der Bytes nicht auf die angegebene Codierung zugeordnet werden kann. In einigen Kontexten können Sie "ignorieren" oder "ersetzen" verwenden.

Weitere Informationen finden Sie unter the python doc.

+0

So bekomme ich diesen Fehler jetzt UnicodeEncodeError: 'Ascii' Codec kann nicht codieren Zeichen u '\ Ueff' in Position 0: Ordnungszahl nicht im Bereich (128) – ABaut

+0

Welche Zeile des Codes wirft den Fehler? –

+0

Datei "Python48.py", Zeile 16, in für Zeile im Leser: UnicodeEncodeError: 'Ascii' Codec kann nicht codieren Zeichen u '\ Ueff' in Position 0: Ordnungszahl nicht im Bereich (128) – ABaut