python面試題及答案.doc_第1頁
python面試題及答案.doc_第2頁
python面試題及答案.doc_第3頁
python面試題及答案.doc_第4頁
python面試題及答案.doc_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

.1. Python是如何進行內(nèi)存管理的?答:從三個方面來說,一對象的引用計數(shù)機制,二垃圾回收機制,三內(nèi)存池機制一、對象的引用計數(shù)機制python內(nèi)部使用引用計數(shù),來保持追蹤內(nèi)存中的對象,所有對象都有引用計數(shù)。引用計數(shù)增加的情況:1,一個對象分配一個新名稱2,將其放入一個容器中(如列表、元組或字典)引用計數(shù)減少的情況:1,使用del語句對對象別名顯示的銷毀2,引用超出作用域或被重新賦值sys.getrefcount( )函數(shù)可以獲得對象的當前引用計數(shù)多數(shù)情況下,引用計數(shù)比你猜測得要大得多。對于不可變數(shù)據(jù)(如數(shù)字和字符串),解釋器會在程序的不同部分共享內(nèi)存,以便節(jié)約內(nèi)存。二、垃圾回收1,當一個對象的引用計數(shù)歸零時,它將被垃圾收集機制處理掉。2,當兩個對象a和b相互引用時,del語句可以減少a和b的引用計數(shù),并銷毀用于引用底層對象的名稱。然而由于每個對象都包含一個對其他對象的應用,因此引用計數(shù)不會歸零,對象也不會銷毀。(從而導致內(nèi)存泄露)。為解決這一問題,解釋器會定期執(zhí)行一個循環(huán)檢測器,搜索不可訪問對象的循環(huán)并刪除它們。三、內(nèi)存池機制Python提供了對內(nèi)存的垃圾收集機制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。1,Pymalloc機制。為了加速Python的執(zhí)行效率,Python引入了一個內(nèi)存池機制,用于管理對小塊內(nèi)存的申請和釋放。2,Python中所有小于256個字節(jié)的對象都使用pymalloc實現(xiàn)的分配器,而大的對象則使用系統(tǒng)的malloc。3,對于Python對象,如整數(shù),浮點數(shù)和List,都有其獨立的私有內(nèi)存池,對象間不共享他們的內(nèi)存池。也就是說如果你分配又釋放了大量的整數(shù),用于緩存這些整數(shù)的內(nèi)存就不能再分配給浮點數(shù)。 2. 什么是lambda函數(shù)?它有什么好處?答:lambda 表達式,通常是在需要一個函數(shù),但是又不想費神去命名一個函數(shù)的場合下使用,也就是指匿名函數(shù)lambda函數(shù):首要用途是指點短小的回調函數(shù)lambda arguments:expression a=lambdax,y:x+y a(3,11)3. Python里面如何實現(xiàn)tuple和list的轉換?答:直接使用tuple和list函數(shù)就行了,type()可以判斷對象的類型 4. 請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復元素答:1,使用set函數(shù),set(list)2,使用字典函數(shù),a=1,2,4,2,4,5,6,5,7,8,9,0 b=b=b.fromkeys(a)c=list(b.keys() c5. 編程用sort進行排序,然后從最后一個元素開始判斷a=1,2,4,2,4,5,7,10,5,5,7,8,9,0,3a.sort()last=a-1for i inrange(len(a)-2,-1,-1):if last=ai:del aielse:last=aiprint(a) 6. Python里面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區(qū)別)答:賦值(=),就是創(chuàng)建了對象的一個新的引用,修改其中任意一個變量都會影響到另一個。淺拷貝:創(chuàng)建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變)1,完全切片方法;2,工廠函數(shù),如list();3,copy模塊的copy()函數(shù)深拷貝:創(chuàng)建一個新的對象,并且遞歸的復制它所包含的對象(修改其中一個,另外一個不會改變)copy模塊的deep.deepcopy()函數(shù) 7. 介紹一下except的用法和作用?答:tryexceptexceptelsefinally執(zhí)行try下的語句,如果引發(fā)異常,則執(zhí)行過程會跳到except語句。對每個except分支順序嘗試執(zhí)行,如果引發(fā)的異常與except中的異常組匹配,執(zhí)行相應的語句。如果所有的except都不匹配,則異常會傳遞到下一個調用本代碼的最高層try代碼中。try下的語句正常執(zhí)行,則執(zhí)行else塊代碼。如果發(fā)生異常,就不會執(zhí)行如果存在finally語句,最后總是會執(zhí)行。8. Python中pass語句的作用是什么?答:pass語句不會執(zhí)行任何操作,一般作為占位符或者創(chuàng)建占位程序,whileFalse:pass9. 介紹一下Python下range()函數(shù)的用法?答:列出一組數(shù)據(jù),經(jīng)常用在for in range()循環(huán)中10. 如何用Python來進行查詢和替換一個文本字符串?答:可以使用re模塊中的sub()函數(shù)或者subn()函數(shù)來進行查詢和替換,格式:sub(replacement, string,count=0)(replacement是被替換成的文本,string是需要被替換的文本,count是一個可選參數(shù),指最大被替換的數(shù)量) import rep=pile(blue|white|red)print(p.sub(colour,blue socks and red shoes)colour socks and colourshoesprint(p.sub(colour,blue socks and red shoes,count=1)colour socks and redshoessubn()方法執(zhí)行的效果跟sub()一樣,不過它會返回一個二維數(shù)組,包括替換后的新的字符串和總共替換的數(shù)量 11. Python里面match()和search()的區(qū)別?答:re模塊中match(pattern,string,flags),檢查string的開頭是否與pattern匹配。re模塊中research(pattern,string,flags),在string搜索pattern的第一個匹配值。print(re.match(super, superstition).span()(0, 5)print(re.match(super, insuperable)Noneprint(re.search(super, superstition).span()(0, 5)print(re.search(super, insuperable).span()(2, 7)12. 用Python匹配HTML tag的時候,和有什么區(qū)別?答:術語叫貪婪匹配( )和非貪婪匹配( )例如:test :test :13. Python里面如何生成隨機數(shù)?答:random模塊隨機整數(shù):random.randint(a,b):返回隨機整數(shù)x,a=xsmall_list_sum:return ( (big_list,small_list)else:return ( small_list,big_list)tests = 1,2,3,4,5,6,700,800,10001,10000,100,90,50,1,range(1, 11),12312, 12311, 232, 210,30, 29, 3, 2, 1, 1for l in tests:l.sort()printprint “Source List:t”,ll1,l2 = mean(l)print “Result List:t”,l1, l2print “Distance:t”,abs(sum(l1)-sum(l2)print -*40輸出結果Python代碼Source List: 1, 2, 3, 4, 5, 6, 700, 800Result List: 1, 4, 5, 800 2, 3, 6, 700Distance: 99-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List: 1, 50, 90, 100, 10000, 10001Result List: 50, 90, 10000 1, 100, 10001Distance: 38-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10Result List: 2, 3, 6, 7, 10 1, 4, 5, 8, 9Distance: 1-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List: 1, 1, 2, 3, 29, 30, 210, 232, 12311, 12312Result List: 1, 3, 29, 232, 12311 1, 2, 30, 210, 12312Distance: 21 20. python程序中文輸出問題怎么解決?方法一:用encode和decode如:import os.pathimport xlrd,sysFilename=/home/tom/Desktop/1234.xlsif not os.path.isfile(Filename):raise NameError,”%s is not a valid filename”%Filenamebk=xlrd.open_workbook(Filename)shxrange=range(bk.nsheets)print shxrangefor x in shxrange:p=bk.sheets().encode(utf-8)print p.decode(utf-8)方法二:在文件開頭加上reload(sys)sys.setdefaultencoding(utf8)這2行,再試著運行一下字符串在Python內(nèi)部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。 decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode(gb2312),表示將gb2312編碼的字符串str1轉換成unicode編碼。 encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode(gb2312),表示將unicode編碼的字符串str2轉換成gb2312編碼。 因此,轉碼的時候一定要先搞明白,字符串str是什么編碼,然后decode成unicode,然后再encode成其他編碼代碼中字符串的默認編碼與代碼文件本身的編碼一致。 如:s=中文如果是在utf8的文件中,該字符串就是utf8編碼,如果是在gb2312的文件中,則其編碼為gb2312。這種情況下,要進行編碼轉換,都需要先用decode方法將其轉換成unicode編碼,再使用encode方法將其轉換成其他編碼。通常,在沒有指定特定的編碼方式時,都是使用的系統(tǒng)默認編碼創(chuàng)建的代碼文件。 如果字符串是這樣定義:s=u中文則該字符串的編碼就被指定為unicode了,即python的內(nèi)部編碼,而與代碼文件本身的編碼無關。因此,對于這種情況做編碼轉換,只需要直接使用encode方法將其轉換成指定編碼即可。如果一個字符串已經(jīng)是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷:isinstance(s,unicode) #用來判斷是否為unicode 用非unicode編碼形式的str來encode會報錯 如何獲得系統(tǒng)的默認編碼? #!/usr/bin/env python#coding=utf-8import sysprint sys.getdefaultencoding() 該段程序在英文WindowsXP上輸出為:ascii 21. python代碼得到列表list的交集與差集交集b1=1,2,3b2=2,3,4b3 = val for val in b1if val in b2print b3差集b1=1,2,3b2=2,3,4b3 = val for val in b1 if val not in b2print b3差集實例-#/bin/env python# -*- coding:utf-8 -*-f =open(C:diff_dealerexcel.txt)excel = f.readlines()f.close()f= open(C:diff_dealerdb.txt)db = f.readlines()diff = val for val in db if val not in excelf.close()f =open(C:diff_dealerdiff.txt, w)f.writelines(diff)f.close()print diff 22. 寫一個簡單的python socket編程python 編寫server的步驟:1第一步是創(chuàng)建socket對象。調用socket構造函數(shù)。如:socket = socket.socket(family, type )family參數(shù)代表地址家族,可為AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一臺機器上的進程間通信。type參數(shù)代表套接字類型,可為SOCK_STREAM(流套接字)和SOCK_DGRAM(數(shù)據(jù)報套接字)。2.第二步是將socket綁定到指定地址。這是通過socket對象的bind方法來實現(xiàn)的:socket.bind( address )由AF_INET所創(chuàng)建的套接字,address地址必須是一個雙元素元組,格式是(host,port)。host代表主機,port代表端口號。如果端口號正在使用、主機名不正確或端口已被保留,bind方法將引發(fā)socket.error異常。3.第三步是使用socket套接字的listen方法接收連接請求。socket.listen( backlog )backlog指定最多允許多少個客戶連接到服務器。它的值至少為1。收到連接請求后,這些請求需要排隊,如果隊列滿,就拒絕請求。4.第四步是服務器套接字通過socket的accept方法等待客戶請求一個連接。connection, address =socket.accept()調用accept方法時,socket會時入“waiting”狀態(tài)。客戶請求連接時,方法建立連接并返回服務器。accept方法返回一個含有兩個元素的元組(connection,address)。第一個元素connection是新的socket對象,服務器必須通過它與客戶通信;第二個元素address是客戶的Internet地址。5. 第五步是處理階段,服務器和客戶端通過send和recv方法通信(傳輸數(shù)據(jù))。服務器調用send,并采用字符串形式向客戶發(fā)送信息。send方法返回已發(fā)送的字符個數(shù)。服務器使用recv方法從客戶接收信息。調用recv 時,服務器必須指定一個整數(shù),它對應于可通過本次方法調用來接收的最大數(shù)據(jù)量。recv方法在接收數(shù)據(jù)時會進入“blocked”狀態(tài),最后返回一個字符串,用它表示收到的數(shù)據(jù)。如果發(fā)送的數(shù)據(jù)量超過了recv所允許的,數(shù)據(jù)會被截短。多余的數(shù)據(jù)將緩沖于接收端。以后調用recv時,多余的數(shù)據(jù)會從緩沖區(qū)刪除(以及自上次調用recv以來,客戶可能發(fā)送的其它任何數(shù)據(jù))。6. 傳輸結束,服務器調用socket的close方法關閉連接。python編寫client的步驟:1. 創(chuàng)建一個socket以連接服務器:socket= socket.socket( family, type )2.使用socket的connect方法連接服務器。對于AF_INET家族,連接格式如下:socket.connect(host,port) )host代表服務器主機名或IP,port代表服務器進程所綁定的端口號。如連接成功,客戶就可通過套接字與服務器通信,如果連接失敗,會引發(fā)socket.error異常。3. 處理階段,客戶和服務器將通過send方法和recv方法通信。4. 傳輸結束,客戶通過調用socket的close方法關閉連接。下面給個簡單的例子: server.py if _name_ =_main_:import socketsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.bind(localhost,8001)sock.listen(5)while True:connection,address =sock.accept()try:connection.settimeout(5)buf =connection.recv(1024)if buf = 1:connection.send(welcometo server!)else:connection.send(pleasego out!)except socket.timeout:print time outconnection.close() client.pypython 代碼if _name_ =_main_:import socketsock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect(localhost,8001)import timetime.sleep(2)sock.send(1)print sock.recv(1024)sock.close() 在終端運行server.py,然后運行clien.py,會在終端打印“welcometo server!。如果更改client.py的sock.23. Python文件操作的面試題1. 如何用Python刪除一個文件?使用os.remove(filename)或者os.unlink(filename);2. Python如何copy一個文件?shutil模塊有一個copyfile函數(shù)可以實現(xiàn)文件拷貝1:Python如何實現(xiàn)單例模式? Python有兩種方式可以實現(xiàn)單例模式,下面兩個例子使用了不同的方式實現(xiàn)單例模式:1.class Singleton(type):def _init_(cls, name, bases, dict):super(Singleton, cls)._init_(name, bases, dict)cls.instance = Nonedef _call_(cls, *args, *kw):if cls.instance is None:cls.instance = super(Singleton, cls)._call_(*args, *kw)return cls.instanceclass MyClass(object):_metaclass_ = Singletonprint MyClass()print MyClass()2. 使用decorator來實現(xiàn)單例模式def singleton(cls):instances = def getinstance():if cls not in instances:instancescls = cls()return instancesclsreturn getinstancesingletonclass MyClass:2:什么是lambda函數(shù)?Python允許你定義一種單行的小函數(shù)。定義lambda函數(shù)的形式如下:labmda參數(shù):表達式lambda函數(shù)默認返回表達式的值。你也可以將其賦值給一個變量。lambda函數(shù)可以接受任意個參數(shù),包括可選參數(shù),但是表達式只有一個: g = lambda x, y: x*y g(3,4)12 g = lambda x, y=0, z=0: x+y+z g(1)1 g(3, 4, 7)14也能夠直接使用lambda函數(shù),不把它賦值給變量: (lambda x,y=0,z=0:x+y+z)(3,5,6)14如果你的函數(shù)非常簡單,只有一個表達式,不包含命令,可以考慮lambda函數(shù)。否則,你還是定義函數(shù)才對,畢竟函數(shù)沒有這么多限制。3:Python是如何進行類型轉換的?Python提供了將變量或值從一種類型轉換成另一種類型的內(nèi)置函數(shù)。int函數(shù)能夠將符合數(shù)學格式數(shù)字型字符串轉換成整數(shù)。否則,返回錯誤信息。 int(”34)34 int(”1234ab”) #不能轉換成整數(shù)ValueError: invalid literal for int(): 1234ab函數(shù)int也能夠把浮點數(shù)轉換成整數(shù),但浮點數(shù)的小數(shù)部分被截去。 int(34.1234)34 int(-2.46)-2函數(shù)oat將整數(shù)和字符串轉換成浮點數(shù): float(”12)12.0 float(”1.111111)1.111111函數(shù)str將數(shù)字轉換成字符: str(98)98 str(”76.765)76.765整數(shù)1和浮點數(shù)1.0在python中是不同的。雖然它們的值相等的,但卻屬于不同的類型。這兩個數(shù)在計算機的存儲形式也是不一樣。4:Python如何定義一個函數(shù)函數(shù)的定義形式如下:def (arg1, arg2, argN):函數(shù)的名字也必須以字母開頭,可以包括下劃線“ ”,但不能把Python的關鍵字定義成函數(shù)的名字。函數(shù)內(nèi)的語句數(shù)量是任意的,每個語句至少有一個空格的縮進,以表示此語句屬于這個函數(shù)的??s進結束的地方,函數(shù)自然結束。下面定義了一個兩個數(shù)相加的函數(shù): def add(p1, p2):print p1, “+”, p2, “=”, p1+p2 add(1, 2)1 + 2 = 3函數(shù)的目的是把一些復雜的操作隱藏,來簡化程序的結構,使其容易閱讀。函數(shù)在調用前,必須先定義。也可以在一個函數(shù)內(nèi)部定義函數(shù),內(nèi)部函數(shù)只有在外部函數(shù)調用時才能夠被執(zhí)行。程序調用函數(shù)時,轉到函數(shù)內(nèi)部執(zhí)行函數(shù)內(nèi)部的語句,函數(shù)執(zhí)行完畢后,返回到它離開程序的地方,執(zhí)行程序的下一條語句。5:Python是如何進行內(nèi)存管理的?Python的內(nèi)存管理是由Python得解釋器負責的,開發(fā)人員可以從內(nèi)存管理事務中解放出來,致力于應用程序的開發(fā),這樣就使得開發(fā)的程序錯誤更少,程序更健壯,開發(fā)周期更短 6:如何反序的迭代一個序列?howdo I iterate over a sequence in reverse order如果是一個list, 最快的解決方案是:list.reverse()try:for x in list:“do something with x”finally:list.reverse()如果不是list, 最通用但是稍慢的解決方案是:for i in range(len(sequence)-1, -1, -1):x = sequencei7:Python里面如何實現(xiàn)tuple和list的轉換?函數(shù)tuple(seq)可以把所有可迭代的(iterable)序列轉換成一個tuple, 元素不變,排序也不變。例如,tuple(1,2,3)返回(1,2,3),tuple(abc)返回(a.b,c).如果參數(shù)已經(jīng)是一個tuple的話,函數(shù)不做任何拷貝而直接返回原來的對象,所以在不確定對象是不是tuple的時候來調用tuple()函數(shù)也不是很耗費的。函數(shù)list(seq)可以把所有的序列和可迭代的對象轉換成一個list,元素不變,排序也不變。例如 list(1,2,3)返回(1,2,3),list(abc)返回a, b, c。如果參數(shù)是一個list,她會像set:一樣做一個拷貝8:Python面試題:請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復元素可以先把list重新排序,然后從list的最后開始掃描,代碼如下:if List:List.sort()last = List-1for i in range(len(List)-2, -1, -1):if last=Listi: del Listielse: last=Listi9:Python文件操作的面試題1. 如何用Python刪除一個文件?使用os.remove(filename)或者os.unlink(filename);2. Python如何copy一個文件?shutil模塊有一個copyfile函數(shù)可以實現(xiàn)文件拷貝10:Python里面如何生成隨機數(shù)?標準庫random實現(xiàn)了一個隨機數(shù)生成器,實例代碼如下:import randomrandom.random()它會返回一個隨機的0和1之間的浮點數(shù)11:如何用Python來發(fā)送郵件?可以使用smtplib標準庫。以下代碼可以在支持SMTP監(jiān)聽器的服務器上執(zhí)行。import sys, smtplibfromaddr = raw_input(”From: “)toaddrs = raw_input(”To: “).split(,)print “Enter message, end with D:”msg = ”while 1:line = sys.stdin.readline()if not line:breakmsg = msg + line# 發(fā)送郵件部分server = smtplib.SMTP(localhost)server.sendmail(fromaddr, toaddrs, msg)server.quit()12:Python里面如何拷貝一個對象?一般來說可以使用copy.copy()方法或者copy.deepcopy()方法,幾乎所有的對象都可以被拷貝一些對象可以更容易的拷貝,Dictionaries有一個copy方法:newdict = olddict.copy()13:有沒有一個工具可以幫助查找python的bug和進行靜態(tài)的代碼分析?有,PyChecker是一個python代碼的靜態(tài)分析工具,它可以幫助查找python代碼的bug, 會對代碼的復雜度和格式提出警告Pylint是另外一個工具可以進行coding standard檢查。14:如何在一個function里面設置一個全局的變量?解決方法是在function的開始插入一個global聲明:def f()global x14:有兩個序列a,b,大小都為n,序列元素的值任意整形數(shù),無序;要求:通過交換a,b中的元素,使序列a元素的和與序列b元素的和之間的差最小。1. 將兩序列合并為一個序列,并排序,為序列Source2. 拿出最大元素Big,次大的元素Small3. 在余下的序列S:-2進行平分,得到序列max,min4. 將Small加到max序列,將Big加大min序列,重新計算新序列和,和大的為max,小的為min。Python代碼def mean( sorted_list ):if not sorted_list:return (,)big = sorted_list-1small = sorted_list-2big_list, small_list = mean(sorted_list:-2)big_list.append(small)small_list.append(big)big_list_sum = sum(big_list)small_list_sum = sum(small_list)if big_list_sum small_list_sum:return ( (big_list, small_list)else:return ( small_list, big_list)tests = 1,2,3,4,5,6,700,800,10001,10000,100,90,50,1,range(1, 11),12312, 12311, 232, 210, 30, 29, 3, 2, 1, 1for l in tests:l.sort()printprint “Source List:t”, ll1,l2 = mean(l)print “Result List:t”, l1, l2print “Distance:t”, abs(sum(l1)-sum(l2)print -*40輸出結果Python代碼Source List: 1, 2, 3, 4, 5, 6, 700, 800Result List: 1, 4, 5, 800 2, 3, 6, 700Distance: 99-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List: 1, 50, 90, 100, 10000, 10001Result List: 50, 90, 10000 1, 100, 10001Distance: 38-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10Result List: 2, 3, 6, 7, 10 1, 4, 5, 8, 9Distance: 1-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List: 1, 1, 2, 3, 29, 30, 210, 232, 12311, 12312Result List: 1, 3, 29, 232, 12311 1, 2, 30, 210, 12312Distance: 21-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*15:用Python匹配HTML tag的時候,和有什么區(qū)別?當重復匹配一個正則表達式時候, 例如, 當程序執(zhí)行匹配的時候,會返回最大的匹配值例如:import res = Titleprint(re.match(, s).group()會返回一個匹配Title而不是而import res = Titleprint(re.match(, s).group()則會返回這種匹配稱作貪心匹配 稱作非貪心匹配16:Python里面search()和match()的區(qū)別?match()函數(shù)只檢測RE是不是在string的開始位置匹配, search()會掃描整個string查找匹配, 也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none例如:print(re.match(super, superstition).span()會返回(0,5)而print(re.match(super, insuperable)則返回Nonesearch()會掃描整個字符串并返回第一個成功的匹配例如:print(re.search(super, superstition).span()返回(0, 5)print(re.search(super, insuperable).span()返回(2,7)17:如何用Python來進行查詢和替換一個文本字符串?可以使用sub()方法來進行查詢和替換,sub方法的格式為:sub(replacement, string, count=0)replacement是被替換成的文本string是需要被替換的文本count是一個可選參數(shù),指最大被替換的數(shù)量例子:import rep = pile(blue|white|red)print(p.sub(co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論