python编码问题汇总

1、使用pycharm写py文件时,不能用模块名命名,否则会出现错误AttributeError: 'module' object has no attribute 'match'


2、当出现UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 11: ordinal not in range(128)错误时
   是因为Python2的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误。那么该怎样解决呢?
   加上下面几段即可
                  import sys
                  reload(sys)

                  sys.setdefaultencoding('utf8')


   python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii


3、 编码杂症之在字符串前面加u ,可以print出英文和数字,但是print汉字的话就是'\u6253\u602a\u8005'的结构,要在字符串前加u才可以输出正确的汉字

    有时候我们从其它地方接受的字符串经过艰难跋涉,它变了个样。比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'。明明肉眼看起来只需要加个u,但是怎么加呢?

   法一:用eval()

               s = '\u6253\u602a\u8005'

                 s1 = eval('u"'+s+'"')

                 print s1

                   打怪者

  法二: 用eval可以。不过这样实现太蛋疼了。  python就自带了解决方法。就是unicode-escape

             >>s = '\u6253\u602a\u8005'

             >>s2 = unicode(s,'unicode-escape')        

            >>print s2

                  打怪者


 4、有个跟unicode-escape齐名的东西,叫string-escape。它的作用可以说是“去掉转义,把2个反斜杠变成1个

          >>s = 'hello\\nworld'          

      >>s
      'hello\\nworld'
  >> s.decode('string-escape')
      'hello\nworld'


            

  

    

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值