str、bytes和bytearray简介 str是字符数据,bytes和bytearray是字节数据。它们都是序列,可以进行迭代遍历。str和bytes是不可变序列,bytearray是可变序列,可以原处修改字节。
bytes和bytearray都能使用str类型的通用函数,比如find()、replace()、islower()等,不能用的是str的格式化操作。所以,如有需要,参考字符串(string)方法整理来获取这些函数的使用方法。
str str将各个字符组合在一起,以一种不可变序列进行存储。但是在底层它还是一个个的二进制数,是由一个个的字节组成的(也就是byte),只不过python根据指定的字符集编码"强行"将字节序列显示为字符。
byte
bytearray
Unicode
利用bytearray实现string的交换:
def swap(string,m,n):
b=bytearray(string)
print type(b)
print type(b[0])
print b[0]
b[m],b[n]=b[n],b[m]
return str(b)
python中的编码、解码 上面说了,编码是将字符数据转换成字节数据(raw data),解码是将字节数据转换成字符数据。在Python中字符数据也就是字符串,即str类型,字节数据也就是bytes类型或bytearray类型。
编码时,可以使用字节类型的构造方法bytes()、bytearray()来构造字节,也可以使用str类型的encode()方法来转换。
解码时,可以使用str类型的构造方法str()来构造字符串,也可以使用bytes、bytearray()类型的decode()方法。
另外需要注意的是,编码和解码的过程中都需要指定编码表(字符集),默认采用的是utf-8字符集。
详细
ord()和chr()
- ord()将字符转成ascii
- chr()将ascii转回字符
def process(list):
n=len(list[0])
res=n
for i in range(1,len(list)):
t=0
while ord(list[0][t])^ord(list[i][t])==0:
t+=1
res=min(res,t)
print list[0][0:res]
list=["charlie","chao","charlis"]
print list[0][0].encode()
n=ord(list[0][0])
print "ascii:", n
print "char:",chr(n)
process(list)
|