Python语言的12个基础知识点小结

128人已阅读 2022-02-17 10:23:39
导读 本篇主要介绍了Python编程中常用的12种基础知识总结,希望对Python语言开发的学习有所帮助。
精品课程

新闻详情

2022-02-17 10:23:39
本篇主要介绍了Python编程中常用的12种基础知识总结,希望对Python语言开发的学习有所帮助。
  python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重、字典排序、字典、列表、字符串互转,时间对象操作,命令行参数解析(getopt),print格式化输出,进制转换,Python调用系统命令或者脚本,Python读写文件。
1、正则表达式替换
  目标:将字符串line中的overview.gif替换成其他字符串。
  >>>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是匹配到的数据,可以通过这样的方式直接引用。
2、遍历目录方法
  在某些时候,我们需要遍历某个目录找出特定的文件列表,可以通过os.walk方法来遍历,非常方便。
  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
3、列表按列排序(list sort)
  如果列表的每个元素都是一个元组(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')]
  >>>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')]
4、列表去重(list uniq)
  有时候需要将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、字典排序(dict sort)
  一般来说,我们都是根据字典的key来进行排序,但是我们如果想根据字典的value值来排序,就使用如下方法:
  >>>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')]
6、字典,列表,字符串互转
  以下是生成数据库连接字符串,从字典转换到字符串。
  >>>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'}
7、时间对象操作
  将时间对象转换成字符串。
  >>>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'
8、命令行参数解析(getopt)
  通常在编写一些日运维脚本时,需要根据不同的条件,输入不同的命令行选项来实现不同的功能。
  在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()
9、print 格式化输出
  9.1、格式化输出字符串
  截取字符串输出,下面例子将只输出字符串的前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
10、Python调用系统命令或者脚本
  使用os.system()调用系统命令,程序中无法获得到输出和返回值。
  >>>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')
11、Python 捕获用户 Ctrl+C ,Ctrl+D 事件
  有些时候,需要在程序中捕获用户键盘事件,比如ctrl+c退出,这样可以更好的安全退出程序。
  try:
  do_some_func()
  except KeyboardInterrupt:
  print"User Press Ctrl+C,Exit"
  except EOFError:
  print"User Press Ctrl+D,Exit"
12、Python 读写文件
  一次性读入文件到列表,速度较快,适用文件比较小的情况下
  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个基础知识点小结,*含正则表达式替换、遍历目录方法、列表按列排序、去重、字典排序等,需要的朋友可以参考下!
上一篇: 程序员经常会犯的五个错误 下一篇: 自学C语言/C++到底难在哪里?

相关文章

推荐课程

查看全部课程
职坐标IT培训

职坐标IT培训

网络课程

查看全部校区 进入官方主页