|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS完全遵守上游供应商的再发行政策,并且以百分之百的软件兼容性为目标。
python编程中经常使用的12种基本常识总结:正则表达式调换,遍历目次办法,列表按列排序、去重,字典排序,字典、列表、字符串互转,时光对象操作,敕令行参数解析(getopt),print格局化输入,进制转换,Python挪用体系敕令或许剧本,Python读写文件。
1、正则表达式调换
目的:将字符串line中的overview.gif调换成其他字符串
- >>>line=>>>mo=re.compile(r(?<=SRC=)"([w+.]+)",re.I)>>>mo.sub(r"1****",line)>>>mo.sub(rreplace_str_1,line)<IMGALIGN="middle"replace_str_overview.gifBORDER="0"ALT=""></span>>>>mo.sub(r"testetstset",line)
复制代码
留意:个中1是婚配到的数据,可以经由过程如许的方法直接援用
2、遍历目次办法
在某些时刻,我们须要遍历某个目次找出特定的文件列表,可以经由过程os.walk办法来遍历,异常便利
- importosfileList=[]rootdir="/data"forroot,subFolders,filesinos.walk(rootdir):if.svninsubFolders:subFolders.remove(.svn)#消除特定目次forfileinfiles:iffile.find(".t2t")!=-1:#查找特定扩大名的文件file_dir_path=os.path.join(root,file)fileList.append(file_dir_path)printfileList
复制代码
3、列表按列排序(listsort)
假如列表的每一个元素都是一个元组(tuple),我们要依据元组的某列来排序的化,可参考以下办法
上面例子我们是依据元组的第2列和第3列数据来排序的,并且是倒序(reverse=True)
- >>>a=[(2011-03-17,2.26,6429600,0.0),(2011-03-16,2.26,12036900,-3.0),(2011-03-15,2.33,15615500,-19.1)]>>>printa[0][0]2011-03-17>>>b=sorted(a,key=lambdaresult:result[1],reverse=True)>>>printb[(2011-03-15,2.33,15615500,-19.1),(2011-03-17,2.26,6429600,0.0),(2011-03-16,2.26,12036900,-3.0)]>>>c=sorted(a,key=lambdaresult:result[2],reverse=True)>>>printc[(2011-03-15,2.33,15615500,-19.1),(2011-03-16,2.26,12036900,-3.0),(2011-03-17,2.26,6429600,0.0)]
复制代码
4、列表去重(listuniq)
有时刻须要将list中反复的元素删除,就要应用以下办法
- >>>lst=[(1,sss),(2,fsdf),(1,sss),(3,fd)]>>>set(lst)set([(2,fsdf),(3,fd),(1,sss)])>>>>>>lst=[1,1,3,4,4,5,6,7,6]>>>set(lst)set([1,3,4,5,6,7])
复制代码
5、字典排序(dictsort)
普通来讲,我们都是依据字典的key来停止排序,然则我们假如想依据字典的value值来排序,就应用以下办法
- >>>fromoperatorimportitemgetter>>>aa={"a":"1","sss":"2","ffdf":5,"ffff2":3}>>>sort_aa=sorted(aa.items(),key=itemgetter(1))>>>sort_aa[(a,1),(sss,2),(ffff2,3),(ffdf,5)]
复制代码
从下面的运转成果看到,依照字典的value值停止排序的
6、字典,列表,字符串互转
以下是生成数据库衔接字符串,从字典转换到字符串
- >>>params={"server":"mpilgrim","database":"master","uid":"sa","pwd":"secret"}>>>["%s=%s"%(k,v)fork,vinparams.items()][server=mpilgrim,uid=sa,database=master,pwd=secret]>>>";".join(["%s=%s"%(k,v)fork,vinparams.items()])server=mpilgrim;uid=sa;database=master;pwd=secret
复制代码
上面的例子是将字符串转化为字典
- >>>a=server=mpilgrim;uid=sa;database=master;pwd=secret>>>aa={}>>>foriina.split(;):aa[i.split(=,1)[0]]=i.split(=,1)[1]...>>>aa{pwd:secret,database:master,uid:sa,server:mpilgrim}
复制代码
7、时光对象操作
- 将时光对象转换成字符串>>>importdatetime>>>datetime.datetime.now().strftime("%Y-%m-%d%H:%M")2011-01-2014:05时光巨细比拟>>>importtime>>>t1=time.strptime(2011-01-2014:05,"%Y-%m-%d%H:%M")>>>t2=time.strptime(2011-01-2016:05,"%Y-%m-%d%H:%M")>>>t1>t2False>>>t1<t2True时光差值盘算,盘算8小时前的时光>>>datetime.datetime.now().strftime("%Y-%m-%d%H:%M")2011-01-2015:02>>>(datetime.datetime.now()-datetime.timedelta(hours=8)).strftime("%Y-%m-%d%H:%M")2011-01-2007:03将字符串转换成时光对象>>>endtime=datetime.datetime.strptime(20100701,"%Y%m%d")>>>type(endtime)<typedatetime.datetime>>>>printendtime2010-07-0100:00:00将从1970-01-0100:00:00UTC到如今的秒数,格局化输入>>>importtime>>>a=1302153828>>>time.strftime("%Y-%m-%d%H:%M:%S",time.localtime(a))2011-04-0713:23:48
复制代码
8、敕令行参数解析(getopt)
平日在编写一些日运维剧本时,须要依据分歧的前提,输出分歧的敕令行选项来完成分歧的功效
在Python中供给了getopt模块很好的完成了敕令行参数的解析,上面间隔解释。请看以下法式:
- #!/usr/bin/envpython#-*-coding:utf-8-*-importsys,os,getoptdefusage():printUsage:analyse_stock.py[options...]Options:-e:ExchangeName-c:User-DefinedCategoryName-f:Readstockinfofromfileandsavetodb-d:deletefromdbbystockcode-n:stockname-s:stockcode-h:thishelpinfotest.py-shaha-n"HAHa"try:opts,args=getopt.getopt(sys.argv[1:],he:c:f:d:n:s:)exceptgetopt.GetoptError:usage()sys.exit()iflen(opts)==0:usage()sys.exit()foropt,arginopts:ifoptin(-h,--help):usage()sys.exit()elifopt==-d:print"delstock%s"%argelifopt==-f:print"readfile%s"%argelifopt==-c:print"user-defined%s"%argelifopt==-e:print"ExchangeName%s"%argelifopt==-s:print"Stockcode%s"%argelifopt==-n:print"Stockname%s"%argsys.exit()
复制代码
9、print格局化输入
9.1、格局化输入字符串
- 截取字符串输入,上面例子将只输入字符串的前3个字母>>>str="abcdefg">>>print"%.3s"%strabc按固定宽度输入,缺乏应用空格补全,上面例子输入宽度为10>>>str="abcdefg">>>print"%10s"%strabcdefg截取字符串,依照固定宽度输入>>>str="abcdefg">>>print"%10.3s"%strabc浮点类型数据位数保存>>>importfpformat>>>a=0.0030000000005>>>b=fpformat.fix(a,6)>>>printb0.003000对浮点数四舍五入,重要应用到round函数>>>fromdecimalimport*>>>a="2.26">>>b="2.29">>>c=Decimal(a)-Decimal(b)>>>printc-0.03>>>c/Decimal(a)*100Decimal(-1.327433628318584070796460177)>>>Decimal(str(round(c/Decimal(a)*100,2)))Decimal(-1.33)
复制代码
9.2、进制转换
有些时刻须要作分歧进制转换,可以参考上面的例子(%x十六进制,%d十进制,%o十进制)
- importosfileList=[]rootdir="/data"forroot,subFolders,filesinos.walk(rootdir):if.svninsubFolders:subFolders.remove(.svn)#消除特定目次forfileinfiles:iffile.find(".t2t")!=-1:#查找特定扩大名的文件file_dir_path=os.path.join(root,file)fileList.append(file_dir_path)printfileList0
复制代码
10、Python挪用体系敕令或许剧本
- importosfileList=[]rootdir="/data"forroot,subFolders,filesinos.walk(rootdir):if.svninsubFolders:subFolders.remove(.svn)#消除特定目次forfileinfiles:iffile.find(".t2t")!=-1:#查找特定扩大名的文件file_dir_path=os.path.join(root,file)fileList.append(file_dir_path)printfileList1
复制代码
11、Python捕捉用户Ctrl+C,Ctrl+D事宜
有些时刻,须要在法式中捕捉用户键盘事宜,好比ctrl+c加入,如许可以更好的平安加入法式
- importosfileList=[]rootdir="/data"forroot,subFolders,filesinos.walk(rootdir):if.svninsubFolders:subFolders.remove(.svn)#消除特定目次forfileinfiles:iffile.find(".t2t")!=-1:#查找特定扩大名的文件file_dir_path=os.path.join(root,file)fileList.append(file_dir_path)printfileList2
复制代码
12、Python读写文件
- importosfileList=[]rootdir="/data"forroot,subFolders,filesinos.walk(rootdir):if.svninsubFolders:subFolders.remove(.svn)#消除特定目次forfileinfiles:iffile.find(".t2t")!=-1:#查找特定扩大名的文件file_dir_path=os.path.join(root,file)fileList.append(file_dir_path)printfileList3
复制代码
小知识:得益于极为出色的稳定性,全球范围内无数著名网站均选用它,CentOS是异次元的服务器也是! |
|