Python使用正则对字符串切片后乱码的问题? 400 报错
对字符串'你^好^吖'进行切分,以"^"未分隔符。
代码如下:
#!/bin/bash/python # coding=utf-8 import sys import re print sys.getdefaultencoding() str='你^好^吖' ss=re.split('\^',str) print ss[0] print ss
对于print ss ,显示的内容是['\xe4\xbd\xa0', '\xe5\xa5\xbd', '\xe5\x90\x96'],请问该怎么解决呢?
[ypchen@localhost python]$ python code.py ascii 你 ['\xe4\xbd\xa0', '\xe5\xa5\xbd', '\xe5\x90\x96']
flags 参数使用 re.UNICODE试试
如果不行,就只能把结果在decode了
######应该是编码问题,看我的utf-8
''' Created on 2011-11-8 @author: dudong0726 ''' import sys import re if __name__ == '__main__': print(sys.getdefaultencoding()) str='你^好^吖' ss=re.split('\^',str) print(ss[0]) print(ss)
结果:
utf-8 你 ['你', '好', '吖']
######你好,你是修改了python默认的编码方式?使用sys.setdefaultencoding('utf-8')这个语句?######
如果是 python 2.7 可以用这个来改默认编码(在 Windows 下的 IDLE 中无效,要在普通 py 脚本或者 Python CLI 中测试):
#-*- coding:utf-8 -*- from __future__ import unicode_literals print(type("test")) # output: <type 'unicode'> spam = "测试字符串" print(spam[1:3]) # output:试字
其实就是提前引入 Python 3.x 的默认 unicode 特性
如果只是少部分使用,那么使用 unicode 格式字符串就好:
>>> u"测试" u'\u6d4b\u8bd5' >>> "测试" '\xb2\xe2\xca\xd4' >>>###### @司徒春运 : 那可以用第二种方法,在每个字符串前面加 u 吧######[ypchen@localhost python]$ python -V Python 2.6.5 。。。######
#!/bin/bash/python # coding=utf-8 import sys import re print sys.getdefaultencoding() default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) print sys.getdefaultencoding() str='你^好^吖' print type(str) ss=re.split('\^',str) print(ss)
ascii utf-8 <type 'str'> ['\xe4\xbd\xa0', '\xe5\xa5\xbd', '\xe5\x90\x96']
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。