PYTHON处理中文的时候的一些小技巧
2018-03-08 22:55
316 查看
相信第一次处理中文的朋友们可能都会对中文的encoding 和程序的报错很头疼。如果你像我一样希望能够把事情尽快做好而不去深究,你可能会写一些异常处理的代码把 UnicodeEncodingError糊弄过去先,但当你开始怀疑有多少encoding出错的信息被你丢弃的时候,可能你会很惊奇。于是,你还是会想坐下来,(洗把脸)然后面对自己必须弄懂什么是utf-8,什么是 ‘gb2312’, 什么是 ‘gbk’ 和其中的猫腻。正如有时候猛撕小伤口上邦迪胶布的快感一样,有时候当你认真面对一些你平时一直回避的问题的时候(其实有时候需要的不是勇气), 你反而会觉得“不过如此”,并且能够一劳永逸的解决问题。关于Python处理Unicode,我所能找到的最言简意赅的入门教程是:
Unicode everywhere (程序内部处理都用unicode)
Encode late (最后encode回所需的encoding, 例如把最终结果写进结果文件)
1. Decode earlyDecode to <type ‘unicode’> ASAP
>>> def to_unicode_or_bust(
… obj, encoding=’utf-8′):
… if isinstance(obj, basestring):
… if not isinstance(obj, unicode):
… obj = unicode(obj, encoding)
… return obj
…
>>>
detects if object is a string and if so converts to unicode, if not already.
2. Unicode everywhere>>> to_unicode_or_bust(ivan_uni)
u’Ivan Krsti\u0107′
>>> to_unicode_or_bust(ivan_utf8)
u’Ivan Krsti\u0107′
>>> to_unicode_or_bust(1234)
1234
3. Encode lateEncode to <type ‘str’> when you write to disk or print
>>> f = open(‘/tmp/ivan_out.txt’,’w’)
>>> f.write(ivan_uni.encode(‘utf-8’))
>>> f.close()
我以前一直觉得unicode相关的处理都是很 dirty 的工作,一般都会一边尝试,一边用异常处理去补丁,看完以上这个教程以后豁然开朗。祝大家也能早日理清处理中文的时候的头绪,坦然直面“神秘”的unicode
微信扫码关注公众号“非典型互联网”,转发文章到朋友圈,截图发至公众号后台,即可获取干货资源链接;
2.互联网人交流群:
关注公众号“非典型互联网”,在公众号后台回复“入群”,人脉共享,一起交流;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201803/1e4bf9fc089b5cdbd55d83189eb6af11)
作者:陈皓,博客地址:https://coolshell.cn/articles/18190.html
Unicode In Python, Completely Demystified (揭秘Python Unicode)
简要罗列一下最重要最实用的点:SolutionDecode early (尽早decode, 将文件中的内容转化成 unicode 再进行下一步处理)Unicode everywhere (程序内部处理都用unicode)
Encode late (最后encode回所需的encoding, 例如把最终结果写进结果文件)
1. Decode earlyDecode to <type ‘unicode’> ASAP
>>> def to_unicode_or_bust(
… obj, encoding=’utf-8′):
… if isinstance(obj, basestring):
… if not isinstance(obj, unicode):
… obj = unicode(obj, encoding)
… return obj
…
>>>
detects if object is a string and if so converts to unicode, if not already.
2. Unicode everywhere>>> to_unicode_or_bust(ivan_uni)
u’Ivan Krsti\u0107′
>>> to_unicode_or_bust(ivan_utf8)
u’Ivan Krsti\u0107′
>>> to_unicode_or_bust(1234)
1234
3. Encode lateEncode to <type ‘str’> when you write to disk or print
>>> f = open(‘/tmp/ivan_out.txt’,’w’)
>>> f.write(ivan_uni.encode(‘utf-8’))
>>> f.close()
我以前一直觉得unicode相关的处理都是很 dirty 的工作,一般都会一边尝试,一边用异常处理去补丁,看完以上这个教程以后豁然开朗。祝大家也能早日理清处理中文的时候的头绪,坦然直面“神秘”的unicode
插播福利
1.近期整理了20G资源,包含产品/运营/测试/程序员/市场等,互联网从业者【工作必备干货技巧、行业专业书籍、面试真题宝典等】,获取方式:微信扫码关注公众号“非典型互联网”,转发文章到朋友圈,截图发至公众号后台,即可获取干货资源链接;
2.互联网人交流群:
关注公众号“非典型互联网”,在公众号后台回复“入群”,人脉共享,一起交流;
作者:陈皓,博客地址:https://coolshell.cn/articles/18190.html
相关文章推荐
- Java在处理大数据的时候一些小技巧
- java在处理大数据的时候一些小技巧
- Java在处理大数据的时候一些小技巧
- 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧
- java在处理大数据的时候一些小技巧
- java在处理大数据的时候一些小技巧
- python处理中文的小技巧(太精辟了)
- Java在处理大数据的时候一些小技巧
- Java在处理大数据的时候一些小技巧
- 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧
- Java在处理大数据的时候一些小技巧
- Java在处理大数据的时候一些小技巧
- 用python + openpyxl处理excel(07+)多文档合并+表格合并 + 一些中文处理的技巧
- 用python + openpyxl处理excel(07+)文档 + 一些中文处理的技巧
- 在Python3中初学者应会的一些基本的提升效率的小技巧
- python输出json时中文处理问题
- python web中models.py中的一些处理
- Python处理中文语言——读取中文
- repeater绑定的时候的小技巧(调用后台方法对当前绑定项进行进一步处理)
- python中文处理