美文网首页Python
总结一下我在工作中遇到的python2与python3的区别,坑

总结一下我在工作中遇到的python2与python3的区别,坑

作者: sexy_cyber | 来源:发表于2018-07-06 10:36 被阅读15次

    1.除法:/

    python3

    44/100
    0.44

    python2

    44/100
    0

    我要计算上10万条数据,结果全都是假数据

    2.将目标数据格式化成字符串:str()

    python3

    str(变量)
    "变量"

    不管你是结构化数据比如:元祖,列表,字典,等等等,还是python基本数据类型,都没毛病
    python2

    str(变量)
    “很多可能”

    如果变量是基本数据类型,那没什么毛病,但是如果是结构化数据,那问题打了,结构内的元素全部变成了unicode编码,import sys,#coding:utf-8都是解决不了的,然后,接下来,就很难接下来了

    3.中文识别与运算:

    python3:

    中文直接写就行了,没有任何毛病

    python2

    import sys
    sys.reload(sys)
    sys.setdefaultencoding('utf-8')
    "#coding:utf-8
    u"汉字"

    这些都要添加上去,烦的一逼

    4.url编码:

    python3

    from urllib.parse import quote
    quote('测试')

    python2

    from urllib import quote
    quote('测试')

    5.编码,解码:encode(),decode()

    python2

    >>> a = '你好'
    >>> a.decode('utf-8')
    u'\u4f60\u597d'
    >>>a.encode('utf-8')
    'Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)'
    
    >>> a = '积极'
    >>> a
    '\xe7\xa7\xaf\xe6\x9e\x81'
    >>> print(type(a))
    <type 'str'>
    >>> 
    

    python3

    >>> a
    '积极'
    >>> a.encode('utf-8')
    b'\xe7\xa7\xaf\xe6\x9e\x81'
    >>> a
    '积极'
    >>> a.decode('utf-8')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'str' object has no attribute 'decode'
    >>> 
    
    

    说明:
    python2是不能够对汉字进行编码的(encode()),但是python是可以的
    python2可以对汉字进行解码(decode()),但是python3不行
    根源在于:python2汉字存在的方式是字符串类型的utf-8二进制码的字符串类型,类似于这样:'\xe7\xa7\xaf\xe6\x9e\x81' ,我的是mac系统;
    然而,python3里面是汉字就是汉字,就像这样:‘测试’

    6.正则匹配问题:re

    从mongodb里面提取数据,需要对数据进行过滤,转化格式,用到re匹配,python3没有任何毛病,但是:
    一万个曹尼玛,试过千万种方法,搞了我几个小时,最后,想想mongodb里面保存的默认编码是unicode,那我在正则规则字符串前面加一个u试试看。
    卧槽
    卧槽
    居然成功,
    心累啊,

     print(date) 
     date = re.match(u'(\d+)月(\d+)日',date)
     date = date.group(1)+'-' +date.group(2)
    
    

    相关文章

      网友评论

        本文标题:总结一下我在工作中遇到的python2与python3的区别,坑

        本文链接:https://www.haomeiwen.com/subject/wlrvuftx.html