迭代
迭代通过for…in…实现
①list
>>> l=['Ryan','Rick','Morty']
>>> for key in l:
print key
Ryan
Rick
Morty
②tuple
>>> t=('Ryan','Rick','Morty')
>>> for key in t:
print key
Ryan
Rick
Morty
③字符串
>>> for k in 'abcdefgh':
print k
a
b
c
d
e
f
g
h
④字典
(dict的存储顺序不是按list顺序排列的)
迭代key:
>>> d={'name01':'Ryan','name02':'Rick','name03':'Morty'}
>>> for key in d:
print key
name03
name02
name01
迭代value:
>>> d={'name01':'Ryan','name02':'Rick','name03':'Morty'}
>>> for value in d.iteritems():
print value
('name03', 'Morty')
('name02', 'Rick')
('name01', 'Ryan')
同时迭代key和value:
>>> for key,value in d.iteritems():
print key,value
name03 Morty
name02 Rick
name01 Ryan
⑤同时迭代多个变量:
>>> for x,y,z in [('a',1,4),('b',4,8),('d',7,9),('s',5,89)]:
print x,y,z
a 1 4
b 4 8
d 7 9
s 5 89
⑥利用enumerate函数将list变成索引-元素对:
>>> L=[12,56,789,15,5,89,45,34]
>>> for i,v in enumerate(L):
print i,v
0 12
1 56
2 789
3 15
4 5
5 89
6 45
7 34
⑦判断一个对象是否可以迭代:
>>> from collections import Iterable
>>> isinstance('Ryan',Iterable)
True
>>> isinstance(12345,Iterable)
False
文件读写
1 open()函数
flie_obj = open(filename, mode=’r’,buffering = -1)
filename为传入文件名
mode为可选参数,默认值为r,(’r’读,’w’写,’rb’读二进制文件<图像、视频等>,’wb’写二进制文件)
buffering默认值为-1(表示系统默认的缓存方式),为可选参数(0代表不缓存,1或大于1的值表示缓存一行或指定缓冲区大小)
>>> f1=open('F:/data.txt','r')
>>> print f1.read()
Hello,world!
>>> f1.close()
>>> f2=open('F:/data.txt','w')
>>> f2.write('abcdefg')
>>> f2.close()
读取非ASCII码文本文件时,必须以二进制模式打开,再解码。如GBK编码文件:
f=open('F:/data.txt','r')
u=f.read().decode('gbk')
print u
f.close()
(data.txt文件中内容为中文)
或使用codecs模块:
import codecs
with codecs.open('F:/data.txt','r','gbk') as f:
print f.read()
2 readlines()函数
file_obj.readlines()
将数据从文件中一行一行的读取出来,返回一个list(包含换行符);
3 readline()函数
file_obj.readline()
读取文件中的第一行数据,返回一个字符串;
4 seek()函数
file_obj.seek(offet, whence=0)
在文件中移动文件指针,从whence(0表示文件头部,1表示当前位置,2表示文件尾部)偏移offset个字节;
whence参数可选,默认值为0.
5 split()函数
split(self, sep=None, maxsplit=None)
split()函数:指定分隔符对字符串进行分割,参数1为指定的分隔符,参数2为分割的字符串个数;
s = "40920 8.326976 0.953952 320 8.326976 0.953952"
print s.split('\t')
print s.split('\t',2)
输出:
['40920', '8.326976', '0.953952', '320', '8.326976', '0.953952']
['40920', '8.326976', '0.953952\t320\t8.326976\t0.953952']
6 strip()函数
截取掉所有的回车字符
文件关闭
使用 try…finally 保证无论是否出错都能正确关闭文件
try:
f=open('F:/data.txt','r')
print f.read()
finally:
if f:
f.close()
或利用 with 语句:
with open('F:/data.txt','r') as f:
print f.read()