Existe-t-il un moyen d'ajouter un alias à python pour l'encodage? Il y a des sites sur le Web qui utilisent l'encodage « Windows 1251 », mais ont leur charset mis à gagner-1251, donc je voudrais avoir gagnant-1251 être un alias pour windows-1251Ajout d'un alias de codage à python
Répondre
Le module encodings
est pas bien documenté, donc je voudrais plutôt utiliser codecs
, qui is:
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)
Ceci est Python 2.6 - l'interface est différente dans les versions antérieures. Si vous ne comptez pas vous fier aux composants internes non documentés d'une version spécifique, l'approche de l'aliasing de @ Lennart est bien sur, bien sûr - et en fait plus simple que cela ;-). Mais je soupçonne (comme il le semble) que celui-ci est plus maintenable.
>>> import encodings
>>> encodings.aliases.aliases['win_1251'] = 'cp1251'
>>> print '\xcc\xce\xd1K\xc2\xc0'.decode('win-1251')
MOCKBA
Bien que Personnellement, je considérerais ce patch-singe, et utiliser ma propre table de conversion. Mais je ne peux pas donner de bons arguments pour cette position. :)
Alex a fourni un bon argument pour cette position au-dessus. :-) Je pense que la façon officielle est trop de travail, et fournirais tout simplement ma propre liste de conversion, mais ce n'est pas toujours possible –
Peut-être souligner que les clés 'encodings.aliases.aliases' sont normalisées. C'est ainsi que ''win-1251'' dans l'argument' decode() ', avec un tiret, est mappé à'' win_1251'' avec un trait de soulignement en interne. L'inverse ne fonctionne pas; un nom de codage lisible par un humain avec un tiret doit être représenté par un trait de soulignement dans la clé d'alias. – tripleee
Les alias de codage peuvent être ajoutés en modifiant le fichier aliases.py.
# euc_jp codec
'eucjp' : 'euc_jp',
'ujis' : 'euc_jp',
'u_jis' : 'euc_jp',
'euc_jp_linux' : 'euc_jp',
'euc-jp-linux' : 'euc_jp',
Au-dessus, j'ai ajouté deux alias euc_jp_linux et EUC-jp-linux à l'encodage EUC_JP.
Pour un fichier aliases.py système Linux 64 bits est généralement situé sous /usr/lib64/python2.6/encodings/
- 1. Bogue Python IRC et problème de codage
- 2. vitesse de codage python et plus propre
- 3. Ajout du support SSL à Python 2.6
- 4. Ajout à l'espace de noms local en Python?
- 5. Attribution d'un alias à un alias dans Rails
- 6. Alias de table jointe à SQLProjection
- 7. Alias de vue Seam
- 8. Ajout d'un type MIME en python
- 9. Alias Javascript
- 10. Comment définir un alias à l'échelle du système pour un script Python?
- 11. Normes de codage Drupal à usage commercial?
- 12. alias résultat de la requête
- 13. Ajout de NSInteger à NSMutableData
- 14. Ajout de TemplateField à DetailsView
- 15. Ajout de CSS à l'onglet UQ jQuery Ajout
- 16. Utilisation d'un codage QString
- 17. Ajout d'un argument de délai à la file d'attente de python Queue.join()
- 18. Codage de caractères SOAP
- 19. Comment faire de cette ligne de commande python un alias dans bash?
- 20. Directives de codage XAML
- 21. Codage de caractères confusion!
- 22. Pratique de codage: comment éviter le codage dur?
- 23. Est-ce que 'using namespace' est dans un autre espace de noms équivalent à un alias?
- 24. ajouter un alias de serveur à VHOST du domaine?
- 25. Appel de super à partir d'une méthode avec alias
- 26. paramètres Alias dans SSIS
- 27. Ajout à UITableView
- 28. Codage de table Hsqldb
- 29. struts2 demande de codage
- 30. SQL - table alias scope
Excellent point Alex! --- Ne pas utiliser un module qui n'a pas une grande documentation. –