1、get() 返回指定鍵的值,如果值不在字典中返回default值。

10余年的即墨網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整即墨建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“即墨網(wǎng)站設(shè)計(jì)”,“即墨網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
語(yǔ)法:dict.get(key,default=None)
參數(shù):
key 字典中要查找的鍵。
default 如果指定鍵的值不存在時(shí),返回該默認(rèn)值值。
例:
dict={'Name':'alex','Age':21}
print("Name is:%s"% dict.get('Name')+"\n"+ "Age is:%d"% dict.get('Age'))
顯示結(jié)果為:
Name is:alex
Age is:21
2、update() 將一個(gè)字典中的值更新到另一個(gè)字典中。
語(yǔ)法:dict.update(dict2)
參數(shù):
dict2 添加到指定字典dict里的字典。
例:
dict={'Name':'alex','Age':21}
dict2={'Sex':'female'}
dict.update(dict2)
print("Value is %s" % dict)
顯示結(jié)果為:
Value is {'Name': 'alex', 'Age': 21, 'Sex': 'female'}
在寫python程序時(shí),常能用到一些函數(shù)和方法,總結(jié)一下,保存起來(lái),方便查詢。
一、內(nèi)置函數(shù)
# abs()獲取數(shù)字絕對(duì)值
# chr(i)數(shù)字轉(zhuǎn)換為字符類型
# divmod() 獲取兩個(gè)數(shù)值的商和余數(shù)
# enumerate() 將可遍歷序列組合為索引序列
# float()轉(zhuǎn)換為浮點(diǎn)數(shù)
# format() 格式化字符串
# int()轉(zhuǎn)換為整數(shù)?
# input() 接受用戶輸入內(nèi)容
# len() 計(jì)算元素個(gè)數(shù)
# max() 返回最大值
# min() 返回最小值
# math.ceil() 返回指定數(shù)值的上舍整數(shù)
# open()打開(kāi)文件并返回文件對(duì)象
# pow() 冪運(yùn)算
# print()打印輸出?
# range() 生成器
# reversed()反轉(zhuǎn)所有元素
# round()四舍五入求值
# sorted()對(duì)可迭代對(duì)象進(jìn)行排序?
# str() 轉(zhuǎn)換為字符串
# sum() 求和
# set() 創(chuàng)建集合
# tuple() 將序列轉(zhuǎn)換為元組
# zip()將可迭代對(duì)象打包成元組
二、方法
# append() 添加列表元素
# capitalize()首字母轉(zhuǎn)換為大寫?
# count()字符出現(xiàn)次數(shù)
# close() 關(guān)閉文件
# decode() 解碼字符串
# dict.keys() 獲取字典所有的鍵
# find()字符串首次出現(xiàn)的索引
# f.read() 讀取文件內(nèi)容
# dict.update()更新字典
# dict.items() 獲取字典鍵/值對(duì)
# dict.get() 返回指定鍵的值
# encode() 編碼字符串
# list.sort() 排序列表元素
# index() 元素首次出現(xiàn)的索引
# isdigit() 判斷字符串是否只由數(shù)字組成
# isupper() 是否所有字母都為大寫
# isnum() 判斷字符串是否由字母和數(shù)字組成
# islower() 是否所有字母都為小寫
# isdecimal() 檢查字符串是否只包含十進(jìn)制字符
# isalpha() 檢測(cè)字符串是否為純字母
# random.shuffle()隨機(jī)排序
# random.sample()返回?zé)o重復(fù)隨機(jī)數(shù)列表
# random.choice() 返回一個(gè)隨機(jī)元素
# random.randint() 生成指定范圍的隨機(jī)整數(shù)
# random.randrange() 生成指定范圍的指定遞增基數(shù)隨機(jī)整數(shù)
# pop() 刪除列表中的元素
# remove()刪除列表中的指定元素
# strip()去除空格
# lstrip()去除左側(cè)空格
# rstrip() 去除右側(cè)空格
# readline() 讀取單行內(nèi)容
# root.after() Tkinter中等待一段時(shí)間后再執(zhí)行命令
# str.isnumeric() 驗(yàn)證字符串是否為數(shù)字(適用于Unicode)
# split()分割字符串
# ord() 將字符轉(zhuǎn)換為整數(shù)
# replace() 字符串替換
# ljust() 左對(duì)齊填充
# rjust() 左對(duì)齊填充
# readlines() 讀取所有行內(nèi)容
# datetime.datetime.now() 返回指定時(shí)區(qū)的本地日期時(shí)間
# datetime.datetime.today() 獲取當(dāng)前本地日期的date對(duì)象
# datetime.utcnow() 返回當(dāng)前UTC時(shí)間的datetime對(duì)象
# time.strptime()把時(shí)間字符串解析為元組
# time.time()返回當(dāng)前時(shí)間的時(shí)間戳
# time.sleep()暫停指定秒數(shù)
# time.strftime() 返回指定格式的日期字符串
# time.mktime() 接收時(shí)間元組并返回時(shí)間戳
# os.getcwd() 獲取當(dāng)前工作目錄
# os.listdir() 獲取指定路徑下的目錄和文件列表
# os.makedirs() 遞歸創(chuàng)建目錄
# os.rename() 重命名目錄或文件
# os.path.exists() 判斷路徑是否存在
# upper() 全部轉(zhuǎn)換為大寫字母
# lower()? 全部轉(zhuǎn)換為小寫字母
# sys.stdout.write() 標(biāo)準(zhǔn)輸出打印
# sys.stdout.flush()刷新輸出?
# shutil.copy() 復(fù)制單個(gè)文件到另一文件或目錄
# write() 寫入文件內(nèi)容
# winsound.Beep() 打開(kāi)電腦揚(yáng)聲器
# zfill() 在字符串前面填充0
三、循環(huán)語(yǔ)句
# break終止當(dāng)前循環(huán)
# continue 終止本循環(huán)進(jìn)入下一次循環(huán)
# with open() as file 以with語(yǔ)句打開(kāi)文件(數(shù)據(jù)保存)
四、轉(zhuǎn)義字符
\ 行尾續(xù)行符
\' 單引號(hào)?
\'' 雙引號(hào)
\a 響鈴
\e 轉(zhuǎn)義
\n 換行
\t 橫向制表符
\f 換頁(yè)
\xyy 十六進(jìn)制yy代表的字符
\\反斜杠符號(hào)
\b 退格
\000 空
\v 縱向制表符
\r 回車
\0yy 八進(jìn)制yy代表的字符
\other 其他的字符以普通格式輸出
1
len(list)
列表元素個(gè)數(shù)
2
max(list)
返回列表元素最大值
3
min(list)
返回列表元素最小值
4
list(seq)
將元組轉(zhuǎn)換為列表
序號(hào)
方法
1
list.append(obj)
在列表末尾添加新的對(duì)象
2
list.count(obj)
統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
3
list.extend(seq)
在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來(lái)的列表)
4
list.index(obj)
從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置
5
list.insert(index, obj)
將對(duì)象插入列表
6
list.pop([index=-1])
移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值
7
list.remove(obj)
移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)
8
list.reverse()
反向列表中元素
9
list.sort( key=None, reverse=False)
對(duì)原列表進(jìn)行排序
10
list.clear()
清空列表
11
list.copy()
復(fù)制列表
現(xiàn)在之所以有這么多的小伙伴熱衷于爬蟲(chóng)技術(shù),無(wú)外乎是因?yàn)榕老x(chóng)可以幫我們做很多事情,比如搜索引擎、采集數(shù)據(jù)、廣告過(guò)濾等,以Python為例,Python爬蟲(chóng)可以用于數(shù)據(jù)分析,在數(shù)據(jù)抓取方面發(fā)揮巨大的作用。
但是這并不意味著單純掌握一門Python語(yǔ)言,就對(duì)爬蟲(chóng)技術(shù)觸類旁通,要學(xué)習(xí)的知識(shí)和規(guī)范還有喜很多,包括但不僅限于HTML 知識(shí)、HTTP/HTTPS 協(xié)議的基本知識(shí)、正則表達(dá)式、數(shù)據(jù)庫(kù)知識(shí),常用抓包工具的使用、爬蟲(chóng)框架的使用等。而且涉及到大規(guī)模爬蟲(chóng),還需要了解分布式的概念、消息隊(duì)列、常用的數(shù)據(jù)結(jié)構(gòu)和算法、緩存,甚至還包括機(jī)器學(xué)習(xí)的應(yīng)用,大規(guī)模的系統(tǒng)背后都是靠很多技術(shù)來(lái)支撐的。
零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)?對(duì)于迷茫的初學(xué)者來(lái)說(shuō),爬蟲(chóng)技術(shù)起步學(xué)習(xí)階段,最重要的就是明確學(xué)習(xí)路徑,找準(zhǔn)學(xué)習(xí)方法,唯有如此,在良好的學(xué)習(xí)習(xí)慣督促下,后期的系統(tǒng)學(xué)習(xí)才會(huì)事半功倍,游刃有余。
用Python寫爬蟲(chóng),首先需要會(huì)Python,把基礎(chǔ)語(yǔ)法搞懂,知道怎么使用函數(shù)、類和常用的數(shù)據(jù)結(jié)構(gòu)如list、dict中的常用方法就算基本入門。作為入門爬蟲(chóng)來(lái)說(shuō),需要了解 HTTP協(xié)議的基本原理,雖然 HTTP 規(guī)范用一本書(shū)都寫不完,但深入的內(nèi)容可以放以后慢慢去看,理論與實(shí)踐相結(jié)合后期學(xué)習(xí)才會(huì)越來(lái)越輕松。關(guān)于爬蟲(chóng)學(xué)習(xí)的具體步驟,我大概羅列了以下幾大部分,大家可以參考:
網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)知識(shí):
爬蟲(chóng)的定義
爬蟲(chóng)的作用
Http協(xié)議
基本抓包工具(Fiddler)使用
Python模塊實(shí)現(xiàn)爬蟲(chóng):
urllib3、requests、lxml、bs4 模塊大體作用講解
使用requests模塊 get 方式獲取靜態(tài)頁(yè)面數(shù)據(jù)
使用requests模塊 post 方式獲取靜態(tài)頁(yè)面數(shù)據(jù)
使用requests模塊獲取 ajax 動(dòng)態(tài)頁(yè)面數(shù)據(jù)
使用requests模塊模擬登錄網(wǎng)站
使用Tesseract進(jìn)行驗(yàn)證碼識(shí)別
Scrapy框架與Scrapy-Redis:
Scrapy 爬蟲(chóng)框架大體說(shuō)明
Scrapy spider 類
Scrapy item 及 pipeline
Scrapy CrawlSpider 類
通過(guò)Scrapy-Redis 實(shí)現(xiàn)分布式爬蟲(chóng)
借助自動(dòng)化測(cè)試工具和瀏覽器爬取數(shù)據(jù):
Selenium + PhantomJS 說(shuō)明及簡(jiǎn)單實(shí)例
Selenium + PhantomJS 實(shí)現(xiàn)網(wǎng)站登錄
Selenium + PhantomJS 實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面數(shù)據(jù)爬取
爬蟲(chóng)項(xiàng)目實(shí)戰(zhàn):
分布式爬蟲(chóng)+ Elasticsearch 打造搜索引擎
01 Re概覽
Re模塊是python的內(nèi)置模塊,提供了正則表達(dá)式在python中的所有用法,默認(rèn)安裝位置在python根目錄下的Lib文件夾(如 ..\Python\Python37\Lib)。主要提供了3大類字符串操作方法:
字符查找/匹配
字符替換
字符分割
由于是面向字符串類型的模塊,就不得不提到字符串編碼類型。re模塊中,模式串和搜索串既可以是 Unicode 字符串 (常用str類型) ,也可以是8位字節(jié)串 (bytes,2位16進(jìn)制數(shù)字,例如\xe5) , 但要求二者必須是同類型字符串。
02 字符串查找/匹配
預(yù)編譯:compile
在介紹查找和匹配函數(shù)前,首先需要知道re的compile函數(shù),該函數(shù)可以將一個(gè)模式串編譯成正則表達(dá)式類型,以便后續(xù)快速匹配和復(fù)用
import?re pattern?=?re.compile(r'[a-z]{2,5}') type(pattern)?#re.Pattern
此例創(chuàng)建了一個(gè)正則表達(dá)式式對(duì)象 (re.pattern) ,命名為pattern,用于匹配2-5位小寫字母的模式串。后續(xù)在使用其他正則表達(dá)式函數(shù)時(shí),即可使用pattern進(jìn)行方法調(diào)用。
匹配:match
match函數(shù)用于從文本串的起始位置開(kāi)始匹配,若匹配成功,則返回相應(yīng)的匹配對(duì)象,此時(shí)可調(diào)用group()方法返回匹配結(jié)果,也可用span()方法返回匹配起止下標(biāo)區(qū)間;否則返回None
import?re pattern?=?re.compile(r'[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.match(text1) print(res)?# if?res: ?print(res.group())?#this ?print(res.span())?#(0,?4) text2?=?'是的,?this?is?a?re?test' print(pattern.match(text2))#None
match函數(shù)還有一個(gè)變形函數(shù)fullmatch,當(dāng)且僅當(dāng)模式串與文本串剛好全部匹配時(shí),返回一個(gè)匹配對(duì)象,否則返回None
搜索:search
match只提供了從文本串起始位置匹配的結(jié)果,如果想從任意位置匹配,則可調(diào)用search方法,與match方法類似,當(dāng)任意位置匹配成功,則立即返回一個(gè)匹配對(duì)象,也可調(diào)用span()方法獲取起止區(qū)間、調(diào)用group方法獲得匹配文本串
import?re pattern?=?re.compile(r'\s[a-z]{2}') text1?=?'this?is?a?re?test' res?=?pattern.search(text1) print(res)?# if?res: ?print(res.group())?#is ?print(res.span())?#(4,?7) pattern2?=?re.compile(r'\s[a-z]{5}') text2?=?'是的,this?is?a?re?test' print(pattern2.search(text2))#None
match和search均用于匹配單個(gè)結(jié)果,唯一區(qū)別在于前者是從起始位置開(kāi)始匹配,而后者從任意位置匹配,匹配成功則返回一個(gè)match對(duì)象。
全搜索:findall/finditer
幾乎是最常用的正則表達(dá)式函數(shù),用于尋找所有匹配的結(jié)果,例如在爬蟲(chóng)信息提取中,可非常方便地提取所有匹配字段
import?re pattern?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.findall(text1) print(res)?#['?is',?'?re',?'?test']
findall返回的是一個(gè)列表對(duì)象類型,當(dāng)無(wú)匹配對(duì)象時(shí),返回一個(gè)空列表。為了避免因同時(shí)返回大量匹配結(jié)果占用過(guò)多內(nèi)存,可以調(diào)用finditer函數(shù)返回一個(gè)迭代器類型,其中每個(gè)迭代元素是一個(gè)match對(duì)象,可繼續(xù)調(diào)用group和span方法獲取相應(yīng)結(jié)果
import?re pattern?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re?test' res?=?pattern.finditer(text1) for?r?in?res: ?print(r.group()) """ ?is ?re ?test """
當(dāng)匹配模式串較為簡(jiǎn)單或者僅需單詞調(diào)用時(shí),上述所有方法也可直接調(diào)用re類函數(shù),而無(wú)需事先編譯。此時(shí)各方法的第一個(gè)參數(shù)為模式串。
import?re pattern?=?re.compile(r'\d{2,5}') text?=?'this?is?re?test' re.findall('[a-z]+',?text)?#['this',?'is',?'re',?'test'] 03 字符串替換/分割
替換:sub/subn
當(dāng)需要對(duì)文本串進(jìn)行條件替換時(shí),可調(diào)用re.sub實(shí)現(xiàn) (當(dāng)然也可先編譯后再用調(diào)用實(shí)例方法) ,相應(yīng)參數(shù)分別為模式串、替換格式、文本串,還可以通過(guò)增加缺省參數(shù)限定替換次數(shù)和匹配模式。通過(guò)在模式串進(jìn)行分組,可實(shí)現(xiàn)字符串的格式化替換(類似字符串的format方法),以實(shí)現(xiàn)特定任務(wù)。
import?re text?=?'today?is?2020-03-05' print(re.sub('-',?'',?text))?#'today?is?20200305' print(re.sub('-',?'',?text,?1))?#'today?is?202003-05' print(re.sub('(\d{4})-(\d{2})-(\d{2})',?r'\2/\3/\1',?text))?#'today?is?03/05/2020'
re.sub的一個(gè)變形方法是re.subn,區(qū)別是返回一個(gè)2元素的元組,其中第一個(gè)元素為替換結(jié)果,第二個(gè)為替換次數(shù)
import?re text?=?'today?is?2020-03-05' print(re.subn('-',?'',?text))?#('today?is?20200305',?2)
分割:split
還可以調(diào)用正則表達(dá)式實(shí)現(xiàn)字符串的特定分割,相當(dāng)于.split()方法的一個(gè)加強(qiáng)版,實(shí)現(xiàn)特定模式的分割,返回一個(gè)切割后的結(jié)果列表
import?re text?=?'today?is?a?re?test,?what?do?you?mind?' print(re.split(',',?text))?#['today?is?a?re?test',?'?what?do?you?mind?'] 04 總結(jié)
python中的re模塊提供了正則表達(dá)式的常用方法,每種方法都包括類方法調(diào)用(如re.match)或模式串的實(shí)例調(diào)用(pattern.match)2種形式
常用的匹配函數(shù):match/fullmatch
常用的搜索函數(shù):search/findall/finditer
常用的替換函數(shù):sub/subn
常用的切割函數(shù):split
還有其他很多方法,但不是很常用,具體可參考官方文檔
另外,python還有第三方正則表達(dá)式庫(kù)regex可供選擇
到此這篇關(guān)于一文秒懂python正則表達(dá)式常用函數(shù)的文章就介紹到這了,希望大家以后多多支持!
【常見(jiàn)的內(nèi)置函數(shù)】
1、enumerate(iterable,start=0)
是python的內(nèi)置函數(shù),是枚舉、列舉的意思,對(duì)于一個(gè)可迭代的(iterable)/可遍歷的對(duì)象(如列表、字符串),enumerate將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值。
2、zip(*iterables,strict=False)
用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同,利用*號(hào)操作符,可以將元組解壓為列表。
3、filter(function,iterable)
filter是將一個(gè)序列進(jìn)行過(guò)濾,返回迭代器的對(duì)象,去除不滿足條件的序列。
4、isinstance(object,classinfo)
是用來(lái)判斷某一個(gè)變量或者是對(duì)象是不是屬于某種類型的一個(gè)函數(shù),如果參數(shù)object是classinfo的實(shí)例,或者object是classinfo類的子類的一個(gè)實(shí)例,
返回True。如果object不是一個(gè)給定類型的的對(duì)象, 則返回結(jié)果總是False
5、eval(expression[,globals[,locals]])
用來(lái)將字符串str當(dāng)成有效的表達(dá)式來(lái)求值并返回計(jì)算結(jié)果,表達(dá)式解析參數(shù)expression并作為Python表達(dá)式進(jìn)行求值(從技術(shù)上說(shuō)是一個(gè)條件列表),采用globals和locals字典作為全局和局部命名空間。
【常用的句式】
1、format字符串格式化
format把字符串當(dāng)成一個(gè)模板,通過(guò)傳入的參數(shù)進(jìn)行格式化,非常實(shí)用且強(qiáng)大。
2、連接字符串
常使用+連接兩個(gè)字符串。
3、if...else條件語(yǔ)句
Python條件語(yǔ)句是通過(guò)一條或多條語(yǔ)句的執(zhí)行結(jié)果(True或者False)來(lái)決定執(zhí)行的代碼塊。其中if...else語(yǔ)句用來(lái)執(zhí)行需要判斷的情形。
4、for...in、while循環(huán)語(yǔ)句
循環(huán)語(yǔ)句就是遍歷一個(gè)序列,循環(huán)去執(zhí)行某個(gè)操作,Python中的循環(huán)語(yǔ)句有for和while。
5、import導(dǎo)入其他腳本的功能
有時(shí)需要使用另一個(gè)python文件中的腳本,這其實(shí)很簡(jiǎn)單,就像使用import關(guān)鍵字導(dǎo)入任何模塊一樣。
新聞名稱:python爬取常用函數(shù) python爬取例子
轉(zhuǎn)載來(lái)于:http://chinadenli.net/article12/dodjjdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站收錄、網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)建站、靜態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)