一: print从语句变成函数
原 print 1,2+3 改成 print(1,2+3)>>>1 5
二:range与xrange
原rang(0,4) 结果为列表[0,1,2,3] 改成 list(range(0,4))
远xrange适用于for循环的变量控制,改成range(0,4)
三:字符串
原字符串以8-bit字符串存储,现在改成16-bit Unicode字符存储
四:try...except
原 try
...
except Exception,e
...
改成
try
...
except Exception as e
...
五:打开文件
原file(...)或open(...),现在只能用后者
六:从键盘录入一个字符串
原raw_input("message")改成input('message')
七:bytes数据类型
bytes改成”字节数组“对象,每个元素是8-bit的字节,取值范围0~255
由于python3中字符串是以unicode编码存储,当写入二进制文件时,字符串无法直接写入(或读取),必须以某种方式编码为字节序列后,方可写入
常用的编码方式:"utf-8","utf-16","gb2312","gbk","ascii","latin1"等,当字符串不能编码为指定的编码方式时,会发生异常
1:字符串编码(encode)为bytes
例:s = "张三abc12"
b=s.encode("utf-8")
print(b)>>>输出b'\xe5\xbc\xa0\xe4\xb8\x89abc123'
print(b.decode("utf-8"))>>>张三abc12
使用方法举例:
写入
#coding=gbk
f=open("c:\\test.txt","wb")
s="张三1234abcd"
#-------------
#在python2.x中可以这样写:f.write(s)
#-------------
b=s.encode("gbk")
f.write(b)
f.close()
input("?")
读取
#coding=gbk
f=open("c:\\test.txt","rb")
f.seek(0,2)#定位至文件尾
n=f.tell()#读取文件的字节数
f.seek(0,0)#重新定位至文件开始处
b=f.read(n)
#在python2.x中b是字符串类型,而在python3.0中b是bytes类型。因为需要按指定的编码方式编码
s=b.decode("gbk")
print(s)
f.close()
2:bytes序列一旦形成是不可更改的,如
s="ABCD"
b=s.encode("gbk")
print (b[0]) #显示65
b[0]=66 #出错
八:chr(K)与ord(c)
chr(K)将编码K转为字符,K的范围是0~255(2.x),3.0中K得范围是:0~65535
ord(c)取单个字符的编码,返回值范围是0~255(2.x),3.0中c得范围是:0~65535
九:除法运算符
2.x >>> 10/3 => 3
3.0>>>10/3=>3.3333333333333335 10//3=>3
十:字节数组对象——新增
1:初始化
a=bytearray(10) #a是一个由10个字节组成的数组,其中每个元素是一个字节,类型借用int。此时每个初始值为0
2:字节数组是可变的
a=bytearray(10)
a[0]=25 #可以用赋值语句更改其元素,但所赋的值必须在0~255之间
转换为list:b=list(a)
3:字节数组的切片仍然是字节数组
4:字符串转换成字节数组
s="你好"
b=s.encode("gbk") #先将字符串按某种编码方式(gbk)转换成bytes
c=bytearray(b) #再将bytes转化成字节数组
也可以写作:c=bytearray("你好","gbk")
5:字节数组转化成字符串
c=bytearray(4)
c[0]=65;c[1]=66;c[2]=67;c[3]=68
>>> s=c.decode("gbk")
>>> print(s)
显示:ABCD
6:字节数组可以用于写入文本文件
f=open("c:\\test.txt","wb")
s="张三李四1234abcd"
b=s.encode("gbk")
f.write(b)
c=bytearray("王五","gbk")
f.write(c)
f.close()