python 中文转码

最近在玩一些爬虫,python中文转码刚接触是一件麻烦的事(转换的原理省略)


一般来说有encode('gbk'),edcode('utf8'),decode('gbk'),decode('utf8')可以解决很大一部问题


但是今天遇到了'\\u6210\\u529f'这种格式,上面的三板斧就搞不定了


经过万能的度娘,发现了第一个贴子,叹为观止

http://bbs.chinaunix.net/thread-3674073-1-1.html

代码如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import sys 
def main():
    for line in sys.stdin:
        sys.stdout.write(re.sub(r'\\u\w{4}',
            lambda e: unichr(int(e.group(0)[2:], 16)).encode('utf-8'), 
            line))
if __name__ == '__main__':
    main()


接着又是万能的度娘,没错还是他,找到一个更方便快捷的方法

http://blog.csdn.net/garinwang/article/details/6329262

代码如下

str = str.decode('unicode_escape')
str = str.encode('gbk')

第一步将字符串解码为unicode,第二步将unicode码编码为gbk汉字码。

此种方法能够将整个字符串中的汉字全部编码。


打完收工!


你可能感兴趣的:(python,中文转码)