Gibt es eine Möglichkeit, dass ich Alias zu Python für die Codierung hinzufügen kann. Es gibt Seiten im Internet, die die Kodierung ‚Windows-1251‘ verwenden, aber haben ihre charset zu gewinnen-1251 gesetzt, so möchte ich win-1251 haben ein Alias für Windows-1251 seinHinzufügen von Encoding-Alias zu Python
Antwort
Das encodings
Modul nicht gut so dokumentiert ich stattdessen codecs
, die is verwenden würde:
import codecs
def encalias(oldname, newname):
old = codecs.lookup(oldname)
new = codecs.CodecInfo(old.encode, old.decode,
streamreader=old.streamreader,
streamwriter=old.streamwriter,
incrementalencoder=old.incrementalencoder,
incrementaldecoder=old.incrementaldecoder,
name=newname)
def searcher(aname):
if aname == newname:
return new
else:
return None
codecs.register(searcher)
Dies ist Python 2.6 - die Schnittstelle ist in früheren Versionen unterschiedlich.
Wenn es Ihnen nichts ausmacht, sich auf die nicht dokumentierten Interna einer bestimmten Version zu verlassen, ist @ Lennarts Aliasing-Ansatz natürlich auch in Ordnung - und in der Tat einfacher als das ;-). Aber ich vermute (wie er scheint), dass dieser aufrechterhaltbar ist.
>>> import encodings
>>> encodings.aliases.aliases['win_1251'] = 'cp1251'
>>> print '\xcc\xce\xd1K\xc2\xc0'.decode('win-1251')
MOCKBA
Obwohl Ich würde dieses Monkey-Patching persönlich betrachten und meine eigene Konvertierungstabelle verwenden. Aber ich kann keine guten Argumente für diese Position geben. :)
Alex über ein gutes Argument für diese Position zu bieten hat. :-) Ich denke, der offizielle Weg ist zu viel Arbeit, und würde immer noch einfach meine eigene Konvertierungsliste zur Verfügung stellen, aber das ist nicht immer machbar –
Vielleicht weisen Sie darauf hin, dass die 'encodings.aliases.aliases' Schlüssel normalisiert sind. Dies ist, wie ''win-1251'' im' decode() 'Argument, mit einem Bindestrich, auf' 'win_1251'' mit einem Unterstrich intern abbildet. Andersherum funktioniert nicht; Ein für Menschen lesbarer Kodierungsname mit einem Bindestrich muss mit einem Unterstrich im Alias-Schlüssel dargestellt werden. – tripleee
Codierung Aliasnamen können durch Bearbeiten der Datei aliases.py hinzugefügt werden.
# euc_jp codec
'eucjp' : 'euc_jp',
'ujis' : 'euc_jp',
'u_jis' : 'euc_jp',
'euc_jp_linux' : 'euc_jp',
'euc-jp-linux' : 'euc_jp',
Above ich zwei Aliase hinzugefügt haben euc_jp_linux und euc-jp-linux auf die Codierung EUC_JP.
Für einen 64-Bit-Linux-System aliases.py Datei ist in der Regel befindet sich unter /usr/lib64/python2.6/encodings/
Toller Punkt Alex! --- Verwenden Sie kein Modul, das keine großartige Dokumentation hat. –