>>>line='<IMG SRC=\'#\'"/>'
>>>mo=re.compile(r'(?<=SRC=)"([\w+\.]+)"',re.I)
>>>mo.sub(r'"\1****"',line)
'<IMG SRC=\'#\'"/span>
>>>mo.sub(r'replace_str_\1',line)
'<IMG replace_str_overview.gif BORDER="0"ALT="">'</span>
>>>mo.sub(r'"testetstset"',line)
'<IMG SRC=\'#\'"/span>
注意:其中\1是匹配到的数据,可以通过这样的方式直接引用。
import os
fileList=[]
rootdir="/data"
for root,subFolders,files in os.walk(rootdir):
if'.svn'in subFolders:subFolders.remove('.svn')#排除特定目录
for file in files:
if file.find(".t2t")!=-1:#查找特定扩展名的文件
file_dir_path=os.path.join(root,file)
fileList.append(file_dir_path)
print fileList
下面例子我们是根据元组的第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')]
>>>print a[0][0]
2011-03-17
>>>b=sorted(a,key=lambda result:result[1],reverse=True)
>>>print b
[('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=lambda result:result[2],reverse=True)
>>>print c
[('2011-03-15','2.33',15615500,'-19.1'),('2011-03-16','2.26',12036900,'-3.0'),
('2011-03-17','2.26',6429600,'0.0')]
>>>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])
>>>from operator import itemgetter
>>>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')]
>>>params={"server":"mpilgrim","database":"master","uid":"sa","pwd":"secret"}
>>>["%s=%s"%(k,v)for k,v in params.items()]
['server=mpilgrim','uid=sa','database=master','pwd=secret']
>>>";".join(["%s=%s"%(k,v)for k,v in params.items()])
'server=mpilgrim;uid=sa;database=master;pwd=secret'
下面的例子,是将字符串转化为字典。
>>>a='server=mpilgrim;uid=sa;database=master;pwd=secret'
>>>aa={}
>>>for i in a.split(';'):aa[i.split('=',1)[0]]=i.split('=',1)[1]
...
>>>aa
{'pwd':'secret','database':'master','uid':'sa','server':'mpilgrim'}
>>>import datetime
>>>datetime.datetime.now().strftime("%Y-%m-%d%H:%M")
'2011-01-20 14:05'
时间大小比较。
>>>import time
>>>t1=time.strptime('2011-01-20 14:05',"%Y-%m-%d%H:%M")
>>>t2=time.strptime('2011-01-20 16:05',"%Y-%m-%d%H:%M")
>>>t1>t2
False
>>>t1<t2
True
时间差值计算,计算8小时前的时间。
>>>datetime.datetime.now().strftime("%Y-%m-%d%H:%M")
'2011-01-20 15:02'
>>>(datetime.datetime.now()-datetime.timedelta(hours=8)).strftime("%Y-%m-%d%H:%M")
'2011-01-20 07:03'
将字符串转换成时间对象。
>>>endtime=datetime.datetime.strptime('20100701',"%Y%m%d")
>>>type(endtime)
<type'datetime.datetime'>
>>>print endtime
2010-07-01 00:00:00
将从1970-01-01 00:00:00 UTC到现在的秒数,格式化输出。
>>>import time
>>>a=1302153828
>>>time.strftime("%Y-%m-%d%H:%M:%S",time.localtime(a))
'2011-04-07 13:23:48'
在Python中提供了getopt模块很好的实现了命令行参数的解析,下面距离说明。请看如下程序:
#!/usr/bin/env python
#-*-coding:utf-8-*-
import sys,os,getopt
def usage():
print'''''
Usage:analyse_stock.py[options...]
Options:
-e:Exchange Name
-c:User-Defined Category Name
-f:Read stock info from file and save to db
-d:delete from db by stock code
-n:stock name
-s:stock code
-h:this help info
test.py-s haha-n"HA Ha"
'''
try:
opts,args=getopt.getopt(sys.argv[1:],'he:c:f:d:n:s:')
except getopt.GetoptError:
usage()
sys.exit()
if len(opts)==0:
usage()
sys.exit()
for opt,arg in opts:
if opt in('-h','--help'):
usage()
sys.exit()
elif opt=='-d':
print"del stock%s"%arg
elif opt=='-f':
print"read file%s"%arg
elif opt=='-c':
print"user-defined%s"%arg
elif opt=='-e':
print"Exchange Name%s"%arg
elif opt=='-s':
print"Stock code%s"%arg
elif opt=='-n':
print"Stock name%s"%arg
sys.exit()
截取字符串输出,下面例子将只输出字符串的前3个字母。
>>>str="abcdefg"
>>>print"%.3s"%str
abc
按固定宽度输出,不足使用空格补全,下面例子输出宽度为10。
>>>str="abcdefg"
>>>print"%10s"%str
abcdefg
截取字符串,按照固定宽度输出。
>>>str="abcdefg"
>>>print"%10.3s"%str
abc
浮点类型数据位数保留。
>>>import fpformat
>>>a=0.0030000000005
>>>b=fpformat.fix(a,6)
>>>print b
0.003000
对浮点数四舍五入,主要使用到round函数。
>>>from decimal import*
>>>a="2.26"
>>>b="2.29"
>>>c=Decimal(a)-Decimal(b)
>>>print c
-0.03
>>>c/Decimal(a)*100
Decimal('-1.327433628318584070796460177')
>>>Decimal(str(round(c/Decimal(a)*100,2)))
Decimal('-1.33')
9.2、进制转换
有些时候需要作不同进制转换,可以参考下面的例子(%x十六进制,%d十进制,%o十进制)。
>>>num=10
>>>print"Hex=%x,Dec=%d,Oct=%o"%(num,num,num)
Hex=a,Dec=10,Oct=12
>>>import os
>>>os.system('ls-l/proc/cpuinfo')
>>>os.system("ls-l/proc/cpuinfo")
-r--r--r--1 root root 0 3月29 16:53/proc/cpuinfo
0
使用os.popen()调用系统命令,程序中可以获得命令输出,但是不能得到执行的返回值。
>>>out=os.popen("ls-l/proc/cpuinfo")
>>>print out.read()
-r--r--r--1 root root 0 3月29 16:59/proc/cpuinfo
使用commands.getstatusoutput()调用系统命令,程序中可以获得命令输出和执行的返回值。
>>>import commands
>>>commands.getstatusoutput('ls/bin/ls')
(0,'/bin/ls')
try:
do_some_func()
except KeyboardInterrupt:
print"User Press Ctrl+C,Exit"
except EOFError:
print"User Press Ctrl+D,Exit"
track_file="track_stock.conf"
fd=open(track_file)
content_list=fd.readlines()
fd.close()
for line in content_list:
print line
逐行读入,速度较慢,适用没有足够内存读取整个文件(文件太大)
fd=open(file_path)
fd.seek(0)
title=fd.readline()
keyword=fd.readline()
uuid=fd.readline()
fd.close()
写文件write与writelines的区别。
Fd.write(str):把str写到文件中,write()并不会在str后加上一个换行符。
Fd.writelines(content):把content的内容全部写到文件中,原样写入,不会在每行后面加上任何东西。
这篇文章主要介绍了Python语言的12个基础知识点小结,*含正则表达式替换、遍历目录方法、列表按列排序、去重、字典排序等,需要的朋友可以参考下!