Home Backend Development Python Tutorial Summary of 12 basic knowledge commonly used in python programming

Summary of 12 basic knowledge commonly used in python programming

Apr 30, 2017 pm 05:05 PM

  Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重,字典排序,字典、列表、字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件。

  1、正则表达式替换

  目标: 将字符串line中的 overview.gif 替换成其他字符串

>>> line = &#39;<IMG ALIGN="middle" SRC=\&#39;#\&#39;" /span> 
>>> mo=re.compile(r&#39;(?<=SRC=)"([\w+\.]+)"&#39;,re.I)  

>>> mo.sub(r&#39;"\1****"&#39;,line)  
&#39;<IMG ALIGN="middle" SRC=\&#39;#\&#39;" /span> 

>>> mo.sub(r&#39;replace_str_\1&#39;,line)  
&#39;<IMG ALIGN="middle" replace_str_overview.gif BORDER="0" ALT="">&#39;< /span> 

>>> mo.sub(r&#39;"testetstset"&#39;,line)  
&#39;<IMG ALIGN="middle" SRC=\&#39;#\&#39;" /span>
Copy after login

  注意: 其中 \1 是匹配到的数据,可以通过这样的方式直接引用

  2、遍历目录方法

  在某些时候,我们需要遍历某个目录找出特定的文件列表,可以通过os.walk方法来遍历,非常方便

import os
fileList = []
rootdir = "/data"
for root, subFolders, files in os.walk(rootdir):
if &#39;.svn&#39; in subFolders: subFolders.remove(&#39;.svn&#39;)  # 排除特定目录
for file in files:
  if file.find(".t2t") != -1:# 查找特定扩展名的文件
      file_dir_path = os.path.join(root,file)
      fileList.append(file_dir_path)  

print fileList
Copy after login

  3、列表按列排序(list sort)

  如果列表的每个元素都是一个元组(tuple),我们要根据元组的某列来排序的化,可参考如下方法

  下面例子我们是根据元组的第2列和第3列数据来排序的,而且是倒序(reverse=True)

>>> a = [(&#39;2011-03-17&#39;, &#39;2.26&#39;, 6429600, &#39;0.0&#39;), (&#39;2011-03-16&#39;, &#39;2.26&#39;, 12036900, &#39;-3.0&#39;),
 (&#39;2011-03-15&#39;, &#39;2.33&#39;, 15615500,&#39;-19.1&#39;)]
>>> print a[0][0]
2011-03-17
>>> b = sorted(a, key=lambda result: result[1],reverse=True)
>>> print b
[(&#39;2011-03-15&#39;, &#39;2.33&#39;, 15615500, &#39;-19.1&#39;), (&#39;2011-03-17&#39;, &#39;2.26&#39;, 6429600, &#39;0.0&#39;),
(&#39;2011-03-16&#39;, &#39;2.26&#39;, 12036900, &#39;-3.0&#39;)]
>>> c = sorted(a, key=lambda result: result[2],reverse=True)
>>> print c
[(&#39;2011-03-15&#39;, &#39;2.33&#39;, 15615500, &#39;-19.1&#39;), (&#39;2011-03-16&#39;, &#39;2.26&#39;, 12036900, &#39;-3.0&#39;),
(&#39;2011-03-17&#39;, &#39;2.26&#39;, 6429600, &#39;0.0&#39;)]
Copy after login

  4、列表去重(list uniq)

  有时候需要将list中重复的元素删除,就要使用如下方法

>>> lst= [(1,&#39;sss&#39;),(2,&#39;fsdf&#39;),(1,&#39;sss&#39;),(3,&#39;fd&#39;)]
>>> set(lst)
set([(2, &#39;fsdf&#39;), (3, &#39;fd&#39;), (1, &#39;sss&#39;)])
>>>
>>> lst = [1, 1, 3, 4, 4, 5, 6, 7, 6]
>>> set(lst)
set([1, 3, 4, 5, 6, 7])
Copy after login

  5、字典排序(dict sort)

  一般来说,我们都是根据字典的key来进行排序,但是我们如果想根据字典的value值来排序,就使用如下方法

>>> from operator import itemgetter
>>> aa = {"a":"1","sss":"2","ffdf":&#39;5&#39;,"ffff2":&#39;3&#39;}
>>> sort_aa = sorted(aa.items(),key=itemgetter(1))
>>> sort_aa
[(&#39;a&#39;, &#39;1&#39;), (&#39;sss&#39;, &#39;2&#39;), (&#39;ffff2&#39;, &#39;3&#39;), (&#39;ffdf&#39;, &#39;5&#39;)]
Copy after login

  从上面的运行结果看到,按照字典的value值进行排序的

  6、字典,列表,字符串互转

  以下是生成数据库连接字符串,从字典转换到字符串

>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
>>> ["%s=%s" % (k, v) for k, v in params.items()]
[&#39;server=mpilgrim&#39;, &#39;uid=sa&#39;, &#39;database=master&#39;, &#39;pwd=secret&#39;]
>>> ";".join(["%s=%s" % (k, v) for k, v in params.items()])
&#39;server=mpilgrim;uid=sa;database=master;pwd=secret&#39;
Copy after login

  下面的例子 是将字符串转化为字典

>>> a = &#39;server=mpilgrim;uid=sa;database=master;pwd=secret&#39;
>>> aa = {}
>>> for i in a.split(&#39;;&#39;):aa[i.split(&#39;=&#39;,1)[0]] = i.split(&#39;=&#39;,1)[1]
...
>>> aa
{&#39;pwd&#39;: &#39;secret&#39;, &#39;database&#39;: &#39;master&#39;, &#39;uid&#39;: &#39;sa&#39;, &#39;server&#39;: &#39;mpilgrim&#39;}
Copy after login

  7、时间对象操作

将时间对象转换成字符串
>>> import datetime
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
  &#39;2011-01-20 14:05&#39; 

时间大小比较
>>> import time
>>> t1 = time.strptime(&#39;2011-01-20 14:05&#39;,"%Y-%m-%d %H:%M")
>>> t2 = time.strptime(&#39;2011-01-20 16:05&#39;,"%Y-%m-%d %H:%M")
>>> t1 > t2
  False
>>> t1 < t2
  True 

时间差值计算,计算8小时前的时间
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
  &#39;2011-01-20 15:02&#39;
>>> (datetime.datetime.now() - datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M")
  &#39;2011-01-20 07:03&#39; 

将字符串转换成时间对象
>>> endtime=datetime.datetime.strptime(&#39;20100701&#39;,"%Y%m%d")
>>> type(endtime)
  <type &#39;datetime.datetime&#39;>
>>> 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))
  &#39;2011-04-07 13:23:48&#39;
Copy after login

  8、命令行参数解析(getopt)

  通常在编写一些日运维脚本时,需要根据不同的条件,输入不同的命令行选项来实现不同的功能 在Python中提供了getopt模块很好的实现了命令行参数的解析,下面距离说明。请看如下程序:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys,os,getopt
def usage():
print &#39;&#39;&#39;&#39;&#39;
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"
&#39;&#39;&#39; 

try:
opts, args = getopt.getopt(sys.argv[1:],&#39;he:c:f:d:n:s:&#39;)
except getopt.GetoptError:
usage()
sys.exit()
if len(opts) == 0:
usage()
sys.exit()  

for opt, arg in opts:
if opt in (&#39;-h&#39;, &#39;--help&#39;):
  usage()
  sys.exit()
elif opt == &#39;-d&#39;:
  print "del stock %s" % arg
elif opt == &#39;-f&#39;:
  print "read file %s" % arg
elif opt == &#39;-c&#39;:
  print "user-defined %s " % arg
elif opt == &#39;-e&#39;:
  print "Exchange Name %s" % arg
elif opt == &#39;-s&#39;:
  print "Stock code %s" % arg
elif opt == &#39;-n&#39;:
  print "Stock name %s" % arg  

sys.exit()
Copy after login

  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(&#39;-1.327433628318584070796460177&#39;)
>>> Decimal(str(round(c / Decimal(a) * 100, 2)))
  Decimal(&#39;-1.33&#39;)
Copy after login

  9.2、进制转换

  有些时候需要作不同进制转换,可以参考下面的例子(%x 十六进制,%d 十进制,%o 十进制)

>>> num = 10
>>> print "Hex = %x,Dec = %d,Oct = %o" %(num,num,num)
  Hex = a,Dec = 10,Oct = 12
Copy after login

  10、Python调用系统命令或者脚本

使用 os.system() 调用系统命令 , 程序中无法获得到输出和返回值
>>> import os
>>> os.system(&#39;ls -l /proc/cpuinfo&#39;)
>>> 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(&#39;ls /bin/ls&#39;)
  (0, &#39;/bin/ls&#39;)
Copy after login

  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"
Copy after login

  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的内容全部写到文件中,原样写入,不会在每行后面加上任何东西
Copy after login

               

The above is the detailed content of Summary of 12 basic knowledge commonly used in python programming. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

Choosing Between PHP and Python: A Guide Choosing Between PHP and Python: A Guide Apr 18, 2025 am 12:24 AM

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

Python vs. JavaScript: The Learning Curve and Ease of Use Python vs. JavaScript: The Learning Curve and Ease of Use Apr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

PHP and Python: A Deep Dive into Their History PHP and Python: A Deep Dive into Their History Apr 18, 2025 am 12:25 AM

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

Can vs code run in Windows 8 Can vs code run in Windows 8 Apr 15, 2025 pm 07:24 PM

VS Code can run on Windows 8, but the experience may not be great. First make sure the system has been updated to the latest patch, then download the VS Code installation package that matches the system architecture and install it as prompted. After installation, be aware that some extensions may be incompatible with Windows 8 and need to look for alternative extensions or use newer Windows systems in a virtual machine. Install the necessary extensions to check whether they work properly. Although VS Code is feasible on Windows 8, it is recommended to upgrade to a newer Windows system for a better development experience and security.

Can visual studio code be used in python Can visual studio code be used in python Apr 15, 2025 pm 08:18 PM

VS Code can be used to write Python and provides many features that make it an ideal tool for developing Python applications. It allows users to: install Python extensions to get functions such as code completion, syntax highlighting, and debugging. Use the debugger to track code step by step, find and fix errors. Integrate Git for version control. Use code formatting tools to maintain code consistency. Use the Linting tool to spot potential problems ahead of time.

How to run programs in terminal vscode How to run programs in terminal vscode Apr 15, 2025 pm 06:42 PM

In VS Code, you can run the program in the terminal through the following steps: Prepare the code and open the integrated terminal to ensure that the code directory is consistent with the terminal working directory. Select the run command according to the programming language (such as Python's python your_file_name.py) to check whether it runs successfully and resolve errors. Use the debugger to improve debugging efficiency.

Is the vscode extension malicious? Is the vscode extension malicious? Apr 15, 2025 pm 07:57 PM

VS Code extensions pose malicious risks, such as hiding malicious code, exploiting vulnerabilities, and masturbating as legitimate extensions. Methods to identify malicious extensions include: checking publishers, reading comments, checking code, and installing with caution. Security measures also include: security awareness, good habits, regular updates and antivirus software.

See all articles