开发者社区> 问答> 正文

Python使用正则对字符串切片后乱码的问题? 400 报错

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']

展开
收起
爱吃鱼的程序员 2020-06-01 11:02:42 521 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    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']



    ######我遇到了相同的问题,楼主解决没?######我也是。有没有阶解决了?
    2020-06-01 11:02:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载