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进制表示

浙公网安备 33010602011771号