2016-12-16 5 views
0

So habe ich eine große csv von Französisch Verben, die ich ein Programm zu machen verwenden, in den csv, Verben mit Akzente Zeichen-Codes anstelle der tatsächlichen Akzente enthalten:Konvertieren von Zeichencodes in Unicode [Python]

ê tre ist ê tre, zum Beispiel (atleast, wenn ich die Datei in Excel öffnen)

Hier ist die csv:

https://raw.githubusercontent.com/ianmackinnon/inflect/master/french-verb-conjugation.csv

In Chrome und Firefox atleast werden die Codes in die richtigen Akzente konvertiert. Ich frage mich, ob einmal die Zeichenfolge in Python in eine gegebene Variable importiert wird, dh.

... 
for row in reader: 
     inf_lst.append(row[0]) 
verb = inf_lst[2338] 

#(verb = être) 

, wenn es in der Methode eine einfache/gebaut war es für den Druck mit korrekten Unicode-out zu geben „être“?

Ich bin mir bewusst, dass Sie dies tun könnten, indem Sie die Ö mit ês in jeder Zeichenfolge ersetzen, aber da dies für jeden anderen möglichen Akzent getan werden müsste, fragte ich mich, ob es einen einfacheren Weg gab. Danke,

+0

Sie diese gelesen haben? https://docs.python.org/3/howto/unicode.html –

+1

Welche Version von Python verwenden Sie? Ist es in einer Datei oder online wie Ihr Beispiel? Kannst du das auf einen einfachen Text reduzieren, der das Wort enthält, an dem du interessiert bist? – tdelaney

Antwort

1

Sie können die Unicode-Codierung verwenden, indem Sie eine Zeichenfolge mit 'u' voranstellen.

>>> foo = u'être' >>> print foo être

+0

So schreiben Sie Unicode-Literale in Python 2.x, aber ich sehe nicht, wie es beim Lesen von Daten aus einer Datei oder dem Web hilft. – tdelaney

0

Es kommt alles auf die Zeichenkodierung der Daten. Es ist möglich, dass es utf-8-codiert ist und Sie es in einem Windows-Tool anzeigen, das Ihre lokale Codepage verwendet, die eine andere Anzeige für den Stream bietet. Wie man mit Dateien liest/schreibt ist in der csv doc examples abgedeckt.

Sie haben uns eine gezippte, utf-8 kodierte Webseite gegeben und die requests Module sind gut im Umgang mit dieser Art von Dingen. So können Sie die CSV mit lesen:

>>> import requests 
>>> import csv 
>>> resp=requests.get("https://raw.githubusercontent.com/ianmackinnon/inflect/master/french-verb-conjugation.csv", 
...  stream=True) 
>>> try: 
...  inf_lst = list(csv.reader(resp.iter_lines(decode_unicode=True))) 
... finally: 
...  del resp 
... 
>>> len(inf_list) 
5362 
0

Sie haben eine UTF-8-codierte Datei. Excel mag diese Kodierung, um mit einem Byte Order Mark-Zeichen (U + FEFF) zu beginnen, oder es nimmt stattdessen die Standard-ANSI-Codierung für Ihre Windows-Version an. Verwenden Sie ein Tool wie Notepad++, um UTF-8 mit BOM zu erhalten. Öffnen Sie die Datei in Editor ++. Wählen Sie im Menü Kodierung "In UTF-8-BOM codieren" und speichern Sie. Jetzt wird es korrekt in Excel angezeigt.

Um eine Datei zu schreiben, die Excel öffnen können, verwenden Sie die Codierung utf-8-sig und Unicode-Strings schreiben:

import io 
with io.open('out.csv','w',encoding='utf-8-sig') as f: 
    f.write(u'être') 
Verwandte Themen