Python for循环与编码

  • python 2.7 for循环的时候,默认按字节循环,遇到中文按照字节来循环
  • python 3.5 for循环的时候,循环是按照字符来循环

以UTF-8编码,一个汉字三个字节,一gbk编码,一个汉字2个字节。

name = '李露'

下面分别在python2与python3下 for循环

python3.5

# -*- coding: UTF-8 -*-
name = '李露'
for i in name:
    print i

>>> 李

>>> 露

python2.7

# -*- coding: UTF-8 -*-
name = '李露'
for i in name:
    print i

>>>�

>>>�

>>>�

>>>�

>>>�

>>>�

终端显示6行乱码内容,用2.7循环中文的时候会输出乱码。也就是说2.7循环遇到中文按照字节来循环,“李露”是6个字节,所以循环6次。

  • bytes() 将字符串转换成字节
# -*- coding: UTF-8 -*-
name = '李露'
for i in name:
    print(i)
    # 将汉字转为字节
    print(bytes(i, encoding='utf-8'))  

>>>李
>>>b'\xe6\x9d\x8e'  用16进制表示二进制,输出全部字节默认用16进制
>>>露
>>>b'\xe9\x9c\xb2'

# -*- coding: UTF-8 -*-
name = '李露'
for i in name:
    print(i)
    # 将汉字转为字节
    byte_list = (bytes(i, encoding='utf-8'))
    # 输出全部字节用16进制
    print(byte_list)
    for b in byte_list:
        # for 循环每一个字节时,用10进制输出
        print(b,bin(b))

 

由此,字节的表示方式可以是16进制,10进制,2进制

当输出汉字的全部字节时,默认有16进制表示

当循环时,默认用10进制表示

 

posted @ 2016-09-28 14:03  TianTianLi  阅读(496)  评论(0)    收藏  举报