【优化】py2下hbase的字符串编码问题(\\xe7\\xbc\\x96)

引言

上次写过一篇关于 py2下hbase的字符串编码问题(\xe7\xbc\x96) 的文章,里面的解决方案是正则来进行转换,是一个有点傻但目前又无可奈何的解决方案,并且在最后留下了三个小坑。

本以为应该可以稳定的使用一段时间,没想到才过几天就掉坑里了。

=_=!!

所以这次就开始填坑了吧!!

修改后的代码

talk is cheap ,show me the code!

废话不多说,直接上代码!

import sys
import re

reload(sys)
sys.setdefaultencoding("utf-8")

def str_to_zhongwen(var):
    rule = "\\\\[xX][eE]\w{1}\\\\[xX]\w{2}\\\\[xX]\w{2}"
    words = re.findall(rule, var)
    for t in words:
        new_txt = re.sub('\\\\[xX]','',t).decode('hex')
        var = var.replace(t, new_txt)
    special_chars = {
        '\\\\[xX]0[dD]':'\r',
        '\\\\[xX]0[aA]':'\n',
        '\\\\[xX]09':'\t',
        '\\\\[xX]0[Cc]':'\f',
    }
    for k,v in special_chars.items():
        var = re.sub(k,v,var)
    return var.decode('utf-8')

简单的解释一下:

  • 这里填了上文后面说到的问题2,3。
  • 解决方案都是使用正则来匹配,没有其他骚操作。
  • 所以依然感觉一般般。
  • 因为目前使用的环境是py2,所以也就没有去解决问题1,如果有在py3下遇到编码问题的朋友,计无可施后,可以尝试根据这个思路来解决一下。

over over!

你可能感兴趣的:(python,unicode)