mabue88
Goto Top

Excel-Datei mit dem xlrd-Modul auslesen - String-Encoding-Problem

Hallo,

ich lese mit dem xlrd-Modul den Inhalt von Excel-Dateien aus.
Nun enthielt eine Zelle einen Text mit Umlauten, wodurch ein Fehler auftrat:

'ascii' codec can't encode character u'\xdc' in position 23: ordinal not in range(128)  

Kann mir jemand sagen, wie ich das Encoding in Python entsprechend anpasse, dass ich solche Sonderzeichen einlesen kann?

Danke

Content-Key: 274601

Url: https://administrator.de/contentid/274601

Printed on: April 26, 2024 at 03:04 o'clock

Mitglied: 114757
114757 Jun 15, 2015 updated at 10:45:32 (UTC)
Goto Top
Versuchs mal mit Angabe des Encodings:
xlrd.open_workbook('Mappe1.xls',encoding_override="cp1252")  
https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966

Und folgenden Header in deinem Python Code benutzen
#!/usr/bin/python
# -*- coding: UTF-8 -*-

Gruß jodel32

p.s.
https://docs.python.org/2/howto/unicode.html#the-unicode-type
https://docs.python.org/2/howto/unicode.html
Member: mabue88
mabue88 Jun 16, 2015 at 08:04:37 (UTC)
Goto Top
Hallo jodel,

im Header meines Python-Codes habe ich bereits die beiden Zeilen aufgeführt.
Ich habe jetzt aber gemerkt, dass das Fehler nicht im Einlesen aus der Excel-Datei kommt, sondern wohl eher bei mir face-wink.

Der ganze Tabelleninhalt wird innerhalb einer Klasse eingelesen und wird in eine Array-Dictionary-Kombination geschrieben.
Mich hat nun irritiert, dass wenn ich den gesamten Array-Inhalt per 'print' ausgegeben habe, die Sonderzeichen nicht korrekt dargestellt wurden.

print my_table_array

Sobald ich aber die einzelnen Zelleinhalte direkt ausgebe passt das Encoding:

for row in my_table_array:
	for column in row:
		print row[column]


Vielleicht kannst du mir sagen, warum Sonderzeichen bei der Verwendung der ersten Methode nicht passt.

Danke

Gruss
mabue