Hey bin neu hier und komme direkt zur Sache:
Wir machen in der Schule grad ein Projekt in dem wir aus einer Excel-Datei mit Python Zellen auslesen und diese in eine Html-Website schreiben und beim ausführen des Programms bekomme ich bei folgender Zeile die Fehlermeldung: TypeError: expected a character buffer object
Zeile: ziel.write(sheet.Cells(zeile,spalte).Value)
Dies liegt wie ich herausgefunden habe an dem Typ der Zelle. Deswegen habe ich versucht diese umzuwandeln:
ziel.write(str(sheet.Cells(zeile,spalte).Value))
Doch dies gab mir wiederum folgende Fehlermeldung: UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 13: ordinal not in range(128)
ich bin ratlos und hoffe auf schnelle Antwort
Aaron
Excel Dateien auslesen: 'ascii' codec can't encode character
@Schlangenbändiger: Wie hast Du denn bisher HTML geschrieben? Jedenfalls nicht mit Hilfe einer Templateengine. Deshalb mußt Du Dich um einiges selbst kümmern. Für das Problem solltest Du Dich mit Character-Encoding auseinandersetzen. Du mußt die Excel-Text-Zellen in das selbe Encoding konvertieren wie Du in der HTML-Datei angegeben hast.
-
- User
- Beiträge: 2
- Registriert: Samstag 9. Mai 2015, 21:05
Danke für die schnelle Antwort habs gestern aber nicht mehr gesehen. Habe die html-Datei in utf-8 kodiert und jetzt das hier ausprobiert:
ziel.write(sheet.Cells(zeile,spalte).Value.encoding("utf-8"))
Darauf folgt die Fehlermeldung: 'unicode' object has no attribute 'encoding'
ziel.write(sheet.Cells(zeile,spalte).Value.encoding("utf-8"))
Darauf folgt die Fehlermeldung: 'unicode' object has no attribute 'encoding'
@Schlangenbändiger: Objekte haben ja auch in Python nicht immer die Methoden, die so ausprobiert werden, sondern es gibt eine Dokumention, da steht drin, welche sie tatsächlich haben.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Für das eigentliche Problem muss er nur ein Encoding wählen, welches die Zeichen des Excell-Dokuments repräsentieren kann. Ob das nun mit dem Encoding in der Zieldatei übereinstimmt, ist letztlich unerheblich für das Vermeiden des Fehlers - sinnvoller Weise will man im Zieldokument natürlich keinen Byte-Müll stehen haben und sollte innerhalb einer HTML-Datei keine Encodings mischenSirius3 hat geschrieben:Für das Problem solltest Du Dich mit Character-Encoding auseinandersetzen. Du mußt die Excel-Text-Zellen in das selbe Encoding konvertieren wie Du in der HTML-Datei angegeben hast.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Hyperion: letzlich ist es egal, ob die Zeichen repräsentiert werden können, da man mit "ignore" ja auch ungemappte Zeichen in lustige ? umwandeln kann. Trotzdem löst das nicht das Problem sondern nur die Fehlermeldung verschwindet.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Stimmt. Das wäre eine alternative Lösung.Sirius3 hat geschrieben:@Hyperion: letzlich ist es egal, ob die Zeichen repräsentiert werden können, da man mit "ignore" ja auch ungemappte Zeichen in lustige ? umwandeln kann.
Und genau der Fehler *ist* ja das ProblemSirius3 hat geschrieben: Trotzdem löst das nicht das Problem sondern nur die Fehlermeldung verschwindet.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert