python中 12_python編程中常用的12種基礎知識總結

1、正則表達式替換

目標: 將字符串line中的 overview.gif 替換成其他字符串

>>>?line?='

>>>?mo=re.compile(r'(?<=SRC=)"([\w+\.]+)"',re.I)

>>>?mo.sub(r'"\1****"',line)

'

>>>?mo.sub(r'replace_str_\1',line)

''< /span>

>>>?mo.sub(r'"testetstset"',line)

'

注意: 其中 \1 是匹配到的數據,可以通過這樣的方式直接引用

2、遍歷目錄方法

在某些時候,我們需要遍歷某個目錄找出特定的文件列表,可以通過os.walk方法來遍歷,非常方便

importos

fileList?=?[]

rootdir?="/data"

forroot,?subFolders,?filesinos.walk(rootdir):

if'.svn'insubFolders:?subFolders.remove('.svn')#?排除特定目錄

forfileinfiles:

iffile.find(".t2t")?!=?-1:#?查找特定擴展名的文件

file_dir_path?=?os.path.join(root,file)

fileList.append(file_dir_path)

printfileList

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')]

>>>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、列表去重(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值來排序,就使用如下方法

>>>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-20?14:05'

時間大小比較

>>>importtime

>>>?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?

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)

>>>printendtime

2010-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-07?13:23:48'

8、命令行參數解析(getopt)

通常在編寫一些日運維腳本時,需要根據不同的條件,輸入不同的命令行選項來實現不同的功能

在Python中提供了getopt模塊很好的實現了命令行參數的解析,下面距離說明。請看如下程序:

#!/usr/bin/env?python

#?-*-?coding:?utf-8?-*-

importsys,os,getopt

defusage():

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:')

exceptgetopt.GetoptError:

usage()

sys.exit()

iflen(opts)?==0:

usage()

sys.exit()

foropt,?arginopts:

ifoptin('-h','--help'):

usage()

sys.exit()

elifopt?=='-d':

print"del?stock?%s"%?arg

elifopt?=='-f':

print"read?file?%s"%?arg

elifopt?=='-c':

print"user-defined?%s?"%?arg

elifopt?=='-e':

print"Exchange?Name?%s"%?arg

elifopt?=='-s':

print"Stock?code?%s"%?arg

elifopt?=='-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

浮點類型數據位數保留

>>>importfpformat

>>>?a=0.0030000000005

>>>?b=fpformat.fix(a,6)

>>>printb

0.003000

對浮點數四舍五入,主要使用到round函數

>>>fromdecimalimport*

>>>?a?="2.26"

>>>?b?="2.29"

>>>?c?=?Decimal(a)?-?Decimal(b)

>>>printc

-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()?調用系統命令?,?程序中無法獲得到輸出和返回值

>>>importos

>>>?os.system('ls?-l?/proc/cpuinfo')

>>>?os.system("ls?-l?/proc/cpuinfo")

-r--r--r--1root?root03月2916:53/proc/cpuinfo

0

使用?os.popen()?調用系統命令,?程序中可以獲得命令輸出,但是不能得到執行的返回值

>>>?out?=?os.popen("ls?-l?/proc/cpuinfo")

>>>printout.read()

-r--r--r--1root?root03月2916:59/proc/cpuinfo

使用?commands.getstatusoutput()?調用系統命令,?程序中可以獲得命令輸出和執行的返回值

>>>importcommands

>>>?commands.getstatusoutput('ls?/bin/ls')

(0,'/bin/ls')

11、Python 捕獲用戶 Ctrl+C ,Ctrl+D 事件

有些時候,需要在程序中捕獲用戶鍵盤事件,比如ctrl+c退出,這樣可以更好的安全退出程序

try:

do_some_func()

exceptKeyboardInterrupt:

print"User?Press?Ctrl+C,Exit"

exceptEOFError:

print"User?Press?Ctrl+D,Exit"

12、Python 讀寫文件

一次性讀入文件到列表,速度較快,適用文件比較小的情況下

track_file?="track_stock.conf"

fd?=?open(track_file)

content_list?=?fd.readlines()

fd.close()

forlineincontent_list:

printline

逐行讀入,速度較慢,適用沒有足夠內存讀取整個文件(文件太大)

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的內容全部寫到文件中,原樣寫入,不會在每行后面加上任何東西

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533538.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php smarty分頁原理,SMARTY分頁詳解

<?phprequire_once (include/common.inc.php);//這里是個接口common.inc.php里面包函了一些常用到的函數類庫以及SMARTYinclude_once(header.php);//調用頭部信息,SESSION的信息全都保存在這里,這樣做的好處是幾乎所有的頁面都不需要在開頭輸入session_start();$smarty new…

python十個一行_python 如何將一系列數字十個一行輸出

展開全部答案如下&#xff1a;代碼詳解1、使用循環輸出列表&#xff0c;利用 計數器控制輸出數量&#xff0c;當輸出到第十個&#xff0c;62616964757a686964616fe4b893e5b19e31333365663532計數器歸零&#xff0c;重新開始計數2、print輸出增加end參數可以控制輸出后以什么結尾…

sql oracle 遞歸查詢語句,Oracle使用SQL語句進行遞歸查詢

idpid問題描述&#xff1a;102031415262738495取出id為1及其下屬的所有的數據,結果為下idpid1031417384SQL> CREATE TABLE TBL_TEST2 (3 ID NUMBER,4 NAME VARCHAR2(100 BYTE),5 PID NUMBER DEFAULT 06 );Table createdS…

python中與0xf2相等的是_python中__str__與__repr__

(1)背景python中&#xff0c;對于類(自定義類)的實例對象的默認顯示既沒有太大用處&#xff0c;也不美觀。比如&#xff1a;1 classadder:2 def __init__(self,value0):3 self.datavalue #初始化數據4 def __add__(self,other):5 self.dataother6>>> xadder()7>>…

oracle清理asm歸檔日志,【Oracle】 rman 刪除歸檔日志的命令

因為數據倉庫上asm的磁盤空間不足&#xff0c;需要刪除早期的歸檔日志&#xff0c;查看資料有以下兩種方式&#xff1a;delete archivelog until time sysdate-N;delete archivelog all completed before sysdate-N;這兩個命令的差別在哪里呢&#xff1f;使用list 命令來查看一…

求逆矩陣計算器_991CN的矩陣運算

昨天的推文中說了一道二端口的題目&#xff0c;虛線中的大二端口由兩個小二端口級聯而成&#xff0c;在計算過程中&#xff0c;我們需要使用到矩陣的運算&#xff0c;昨天講題的時候說會說一下用計算器進行矩陣運算&#xff0c;今天我們就來說一下。其實在算電路的時候&#xf…

去快捷方式小箭頭_電腦桌面如何快速去掉快捷方式小箭頭

我們使用電腦時會發現在電腦桌面圖標上經常有一個小箭頭&#xff0c;這是什么原因呢&#xff1f;原來&#xff0c;這個小箭頭只存在于快捷方式的軟件圖標上&#xff0c;就是說通過快捷方式創建的圖標就有這個小箭頭。那么如何去掉這些小箭頭呢&#xff01;不知道也沒關系&#…

Oracle里silent,靜默方式(silent)安裝Oracle軟件

有的時候不方便登陸Linux/Unix的圖形界面安裝數據庫&#xff0c;且GUI方式安裝讓我們無法知道具體是做了什么操作&#xff0c;我們完全可以采用命令模式安裝和刪除Oracle軟件(代替OUI)、建立和刪除數據庫庫(代替dbca)。平臺&#xff1a;RHEL4.5&#xff0c;Oracle10.2.0.11、上…

oracle 移動日志文件,Oracle數據庫移動數據文件、日志文件和控制文件

1、關閉數據庫SQL> shutdown immediate;2、移動數據文件和日志文件到新位置SQL> host mv /u01/olddata.dbf /u02/newdata.dbf;SQL> host mv /u01/oldredo.log /u02/newredo.log;3、以加載模式啟動數據庫SQL> startup mount;4、在數據庫中更改數據文件和日志文件路徑…

python3導入_Python3導入相對還是絕對的正確方法?

我正在編寫一個python模塊。在Python2中一切正常&#xff0c;但在Python3中&#xff0c;導入失敗。這是我的代碼結構。neuralnet/__init__.pytrain.py # A wrapper to train (does not define new things)neuralnet.py # Defines the workhorse class neuralnetlayers/__init__…

oracle pdb是什么意思,淺談Oracle數據庫12c PDB技術

PDB大致功能描述&#xff1a;創建&#xff1a;用create pluggable database的命令&#xff0c;用file_name_convert的方式拷貝seed pdb的文件到對應的新pdb的路徑下。拷貝的是最基本system和sysaux表空間&#xff0c;將新建的pdb從mount的狀態打開到read write的狀態。建立pdb用…

oracle查詢sql時間ain,Oracle SQL 時間查詢

一、在使用Oracle的to_date函數來做日期轉換時&#xff0c;很多Java程序員也許會和我一樣&#xff0c;直覺的采用ldquo;yyyy-MM-dd HH:mm:ssrdquo;的to_date()與24小時制表示法及mm分鐘的顯示&#xff1a;一、在使用Oracle的to_date函數來做日期轉換時&#xff0c;很多Java程序…

室內定位算法_001:室內定位算法技術咨詢服務工作室簡介(更新)

點擊藍字關注我們團隊成員&#xff1a;何博士(中國科學院大學&#xff0c;博士) 楊博士(加拿大多倫多大學&#xff0c;博士后)微信聯系號&#xff1a;UWB_cwhe服務模式&#xff1a;1. 為企業提供定位算法技術支持與指導&#xff0c;以提高企業室內定位系統產品的穩定…

雙系統還是虛擬機 linux系統時間,你會選擇Mac虛擬機還是雙系統

在Mac上運行雙系統&#xff0c;你是會選擇Mac虛擬機呢還是直接雙系統&#xff1f;今天我們就這個問題來討論一下這兩之前的區別&#xff0c;究竟是選擇Mac最好用的虛擬機 parallels desktop還是Boot Camp&#xff1f;1、安裝在pd虛擬機中&#xff0c;安裝系統和安裝驅動完全自動…

oracle中修改多個字段默認值_利用VBA代碼在已有的數據表中刪除、添加、修改字段...

大家好,今日繼續給大家講解VBA數據庫解決方案的第21講,如何利用VBA代碼在已有的數據表中刪除&#xff0c;添加&#xff0c;修改字段。這個內容是操作數據庫的一項必修的內容&#xff0c;還望大家在實際工作中多利用&#xff0c;所以這節的知識&#xff0c;對于讀者提高自己的數…

cs1.5 linux服務端,CS1.5在linux上的配置

CS1.5在linux上的配置作者&#xff1a;作者第一步下載所需要的軟件&#xff1a;hlds_l_3110_full.tar.gzhlds_l_3110b_beta.tar.gzcs_15_full.tar.gzmetamod-1.13.tgzcm_cstrike_1_80_19-en_beta.zipsm_cstrike-2.6.15.zip第二步 解壓 hlds_l_3110_full.tar.gzhlds_l_3110b_bet…

java跟python優勢_當前Java與Python相比還有哪些優勢

首先&#xff0c;Java語言與Python語言都是非常流行的全場景編程語言&#xff0c;在很多開發場景下&#xff0c;既可以使用Java語言&#xff0c;也可以采用Python語言&#xff0c;比如Web開發、大數據開發等等。隨著近幾年大數據和人工智能領域的熱度越來越高&#xff0c;Pytho…

linux添加刪除回環地址,CentOS7如何添加本地回環地址?CentOS7添加本地回環地址的方法...

1、臨時添加ip addr add 10.10.1.1/32 dev lo:1重啟失效2、永久添加cd /etc/sysconfig/network-scriptscp ifcfg-lo ifcfg-lo:1[rootlocalhost network-scripts]# cat ifcfg-lo:1DEVICElo:1IPADDR10.10.1.1NETMASK255.255.255.255ONBOOTyesNAMEloopback1[rootlocalhost network…

python判斷語句的復雜度_Python內置方法的時間復雜度(轉)

本文翻譯自Python Wiki本文基于GPL v2協議&#xff0c;轉載請保留此協議。本頁面涵蓋了Python中若干方法的時間復雜度(或者叫“大歐”&#xff0c;“Big O”)。該時間復雜度的計算基于當前(譯注&#xff1a;至少是2011年之前)的CPython實現。其他Python的實現(包括老版本或者尚…

linux中的碼字軟件,碼字寫作軟件下載

極音創作linux版一款的掌上碼字軟件&#xff0c;這款軟件支持ios&#xff0c;mac&#xff0c;Windows和Android設備上自動同步文件&#xff0c;有需要的朋友快來下載吧&#xff01;軟件特色1、【文件功能】在本軟件的左側是導航欄&#xff0c;羅列了幾個常用的功能。在導航條上…