有没有一种方法可以将别名添加到python进行编码。有在网络上的网站正在使用的编码“窗口-1251”,但有自己的字符集设置为赢得-1251,所以我想有取胜-1251是一个别名为windows-1251将编码别名添加到python
4
A
回答
8
的encodings
模块是不是有据可查的,所以我想改用codecs
,其中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)
这是Python 2.6中 - 该接口是在早期版本不同。
如果您不介意依赖特定版本的无证内部,@ Lennart的别名方法当然也可以 - 确实比这更简单;-)。但我怀疑(如他似乎),这一个更容易维护。
5
>>> import encodings
>>> encodings.aliases.aliases['win_1251'] = 'cp1251'
>>> print '\xcc\xce\xd1K\xc2\xc0'.decode('win-1251')
MOCKBA
虽然我个人会考虑这个猴子补丁,并使用我自己的转换表。但我不能为这个立场提供任何好的论据。 :)
0
通过编辑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',
上面我已经添加了两个别名euc_jp_linux和EUC-JP-linux的到编码EUC_JP。
对于64位Linux系统aliases.py文件通常位于下/usr/lib64/python2.6/encodings/
相关问题
- 1. 将别名添加到模板索引?
- 2. SQL:将别名添加到列值
- 3. 添加别名
- 4. Savon:将编码添加到body标签
- 5. 将新编解码器添加到ffmpeg
- 6. 将硬编码值添加到contentSize
- 7. Fortify 360 - 添加'密码'别名?
- 8. 将编码控件添加到UIMap(编码UI测试)
- 9. 使用sed将别名添加到.bashrc文件中的别名列表
- 10. Python编码人名
- 11. python - 将cookie添加到cookiejar
- 12. 将宏添加到Python
- 13. 尝试以编程方式将SQL别名添加到注册表中
- 14. 自动添加别名到.bashrc
- 15. 将编码辅助功能添加到编辑器
- 16. 如何将bash别名添加到接受参数的.bashrc?
- 17. 使用Flex和Bison将别名功能添加到外壳
- 18. 将制造商名称添加到类别列表
- 19. 如何将CName(别名)添加到amazon ec2 web服务器?
- 20. 如何将2秒的延迟添加到postmessage别名(mIRC)
- 21. 将别名添加到我的虚拟主机
- 22. 如何添加一个新的编码到python 2.6?
- 23. Python的编码错误添加到MySQL表
- 24. 通过http头添加撇号到文件名 - 编码
- 25. 将条形码添加到条形码
- 26. 将子类别添加到laravel 5.4
- 27. 使用objc_setAssociatedObject将ivars添加到类别
- 28. 将类别添加到新邮件
- 29. 不能将类别添加到AVAudioPlayer
- 30. 重命名类别并将缺失的类别添加到系列PANDAS
亚历确实提供用于上述该位置的很好的理由。 :-) 我认为官方的方式太多了,仍然只是提供我自己的转换列表,但这并不总是可行的 – 2009-07-01 20:36:52
也许指出`encodings.aliases.aliases`键是正常化的。这是'decode()`参数中'win-1251'的方式,带有短划线,映射到内部带有下划线的'win_1251'。反过来也行不通。带有短划线的人类可读编码名称需要在别名键中用下划线表示。 – tripleee 2017-05-15 13:07:21