Python程序設(shè)計現(xiàn)代方法(第2版) 課件 第7章 常用庫的使用_第1頁
Python程序設(shè)計現(xiàn)代方法(第2版) 課件 第7章 常用庫的使用_第2頁
Python程序設(shè)計現(xiàn)代方法(第2版) 課件 第7章 常用庫的使用_第3頁
Python程序設(shè)計現(xiàn)代方法(第2版) 課件 第7章 常用庫的使用_第4頁
Python程序設(shè)計現(xiàn)代方法(第2版) 課件 第7章 常用庫的使用_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章常用庫的使用《Python程序設(shè)計現(xiàn)代方法(第2版)》學(xué)習(xí)目標(biāo)/Target

掌握random庫的使用,能夠使用random庫生成隨機(jī)數(shù)

掌握turtle庫的使用,能夠使用turtle庫繪制不同圖形

掌握time庫的使用,能夠使用time庫處理時間掌握jieba庫的使用,能夠使用jieba庫對中文文本實現(xiàn)分詞掌握WordCloud庫的使用,能夠使用WordCloud庫制作詞云圖章節(jié)概述/Summary在Python中,庫(Library)是一種涵蓋了特定功能集合的說法,而非嚴(yán)格定義。Python庫提供了大量的函數(shù)或方法,可以幫助開發(fā)人員更有效地解決各種任務(wù)和問題,從而更輕松地開發(fā)程序。Python中的庫通常分為兩種類型,分別是標(biāo)準(zhǔn)庫(StandardLibrary)和第三方庫(Third-PartyLibrary),其中標(biāo)準(zhǔn)庫會隨Python解釋器一同被安裝,導(dǎo)入程序后直接使用,包括random、turtle、time等;第三方庫是由Python使用者編寫和分享的,使用前需要額外安裝,比如jieba、wordcloud等。本章將介紹一些常用庫的基本用法。目錄/Contents01隨機(jī)數(shù)工具:random庫實例:驗證碼繪圖工具:turtle庫0203實例:繪制幾何圖形04時期時間工具:time庫05目錄/Contents06實例:二十四節(jié)氣倒計時中文分詞工具:jieba庫實例:出場人物統(tǒng)計0708詞云工具:WordCloud庫09實例:生成詞云圖10隨機(jī)數(shù)工具:random庫7.17.1隨機(jī)數(shù)工具:random庫random庫是Python標(biāo)準(zhǔn)庫中的一部分,它提供了一系列的隨機(jī)數(shù)生成函數(shù),可以用于生成隨機(jī)數(shù)和隨機(jī)序列等。函數(shù)功能說明random()用于生成一個隨機(jī)浮點數(shù)n,n的取值范圍是0<=n<1.0uniform(a,b)用于生成一個指定范圍內(nèi)的隨機(jī)浮點數(shù)n,若a<b,則n的取值范圍是a<=n<=b;若a>b,則n的取值范圍是b<=n<=arandint(a,b)用于生成一個指定范圍內(nèi)的整數(shù)n,n的取值范圍是a<=n<=b7.1隨機(jī)數(shù)工具:random庫函數(shù)功能說明randrange([start,]stop[,step])生成一個按指定基數(shù)遞增的序列,再從該序列中獲取一個隨機(jī)數(shù)。start參數(shù)表示范圍的起始值,包含在范圍內(nèi);stop參數(shù)表示范圍的結(jié)束值,不包含在范圍內(nèi);step參數(shù)是可選的,表示基數(shù),默認(rèn)值為1choice(sequence)從序列中獲取一個隨機(jī)元素,參數(shù)sequence接收一個序列類型shuffle(x[,random])將序列x中的元素隨機(jī)排列sample(sequence,k)從指定序列中獲取長度為k的片段,隨機(jī)排列后返回新的序列random庫是Python標(biāo)準(zhǔn)庫中的一部分,它提供了一系列的隨機(jī)數(shù)生成函數(shù),可以用于生成隨機(jī)數(shù)和隨機(jī)序列等。7.1隨機(jī)數(shù)工具:random庫生成隨機(jī)數(shù)的示例代碼如下:importrandomprint(random.random())#生成0~1.0之間的隨機(jī)浮點數(shù),包含0print(random.uniform(3,5))#生成3.0~5.0之間的隨機(jī)浮點數(shù),包含3.0和5.0print(random.randint(2,8))#生成2~8之間的的隨機(jī)整數(shù),包含2和8print(random.randrange(10))#生成0~9的序列,從該序列中獲取隨機(jī)數(shù)print(random.randrange(1,10,2))#生成序列[1,3,5,7,9],從中獲取一個元素7.1隨機(jī)數(shù)工具:random庫importrandomresult=random.choice(['勤','而','行','之'])print(result)word_li=['勤','而','行','之']#隨機(jī)排列列表里面的元素random.shuffle(word_li)print(word_li)#從元組中獲取長度為3的片段,對這個片段隨機(jī)排列后返回新的序列result=random.sample(('勤','而','行','之'),k=3)print(result)生成隨機(jī)數(shù)的示例代碼如下:實例:驗證碼7.27.2

實例:驗證碼當(dāng)前互聯(lián)網(wǎng)時代,為了保護(hù)用戶信息和安全,許多網(wǎng)站都設(shè)置了驗證碼。這樣做的目的是為了識別用戶是否為機(jī)器人,防止機(jī)器人自動注冊賬號、發(fā)送垃圾信息等行為。常見的驗證碼由數(shù)字和字母組成,長度通常為4位或6位。7.2

實例:驗證碼本實例要求編寫一個程序,用于生成一個6位驗證碼。6位驗證碼有6個字符,每位字符都有3種可能,分別是大寫字母、小寫字母、數(shù)字,具體的類型和取值都無法確定。

7.2

實例:驗證碼實現(xiàn)思路可以分為以下步驟:(1)定義一個函數(shù),用于生成6位驗證碼。(2)在函數(shù)內(nèi)部定義一個用于保存驗證碼字符的變量,變量的初始值為空字符串。(3)通過for語句和range()函數(shù)循環(huán)生成驗證碼的每一個字符。(4)在循環(huán)內(nèi)部,隨機(jī)生成一個代表字符類型的數(shù)字,并且隨機(jī)生成一個該類型的字符。繪圖工具:turtle庫7.37.3.1

創(chuàng)建圖形窗口圖形窗口也稱為畫布(canvas)??刂婆_無法繪制圖形,使用turtle庫繪制圖形化界面可以先使用setup()函數(shù)創(chuàng)建圖形窗口,該函數(shù)的語法格式如下。setup(width,height,startx=None,starty=None)例如,使用turtle的setup()函數(shù)創(chuàng)建一個寬800像素、高600像素的圖形窗口,代碼如下:turtle.setup(800,600)需要說明的是,使用turtle庫實現(xiàn)圖形化界面時setup()函數(shù)并不是必須的,如果程序中沒有調(diào)用setup()函數(shù),程序執(zhí)行時會生成一個默認(rèn)窗口。另外,通過turtle庫的title()函數(shù)可以為窗口設(shè)置標(biāo)題,如此每次打開的窗口左上角都會顯示指定的標(biāo)題。7.3.1

創(chuàng)建圖形窗口使用turtle庫繪制圖形完畢后,應(yīng)調(diào)用turtle庫的done()函數(shù)通知圖形窗口繪制結(jié)束,不過圖形窗口仍然處于打開狀態(tài),直到用戶手動關(guān)閉圖形窗口時才會退出,示例如下:importturtleturtle.setup(800,600)#創(chuàng)建圖形窗口turtle.done()#繪制結(jié)束7.3.2

設(shè)置畫筆1.設(shè)置畫筆屬性的相關(guān)函數(shù)turtle庫中用于設(shè)置畫筆屬性的函數(shù)主要有3個,語法格式如下。pensize(<width>) #設(shè)置畫筆尺寸speed(speed) #設(shè)置畫筆移動的速度color(color) #設(shè)置畫筆顏色7.3.2

設(shè)置畫筆(1)pensize()函數(shù)參數(shù)width表示畫筆的尺寸,即畫筆繪制出線條的寬度,若該參數(shù)為空,則pensize()函數(shù)返回畫筆當(dāng)前的尺寸。(2)speed()函數(shù)參數(shù)speed表示畫筆移動的速度,該參數(shù)的取值為0~10的整數(shù),包括0和10在內(nèi),整數(shù)越大,速度越快。1.設(shè)置畫筆屬性的相關(guān)函數(shù)7.3.2

設(shè)置畫筆(3)color()函數(shù)color()函數(shù)的參數(shù)color表示畫筆的顏色,該參數(shù)的值有以下幾種表示方式:字符串。例如red、orange、yellow、green等。RGB顏色。這種表示方式又分為RGB整數(shù)值和RGB小數(shù)值兩種,RGB整數(shù)值如(255,255,255)、(190,213,98),RGB小數(shù)值如(1,1,1)、(0.65,0.7,0.9)。十六進(jìn)制顏色,如#FFFFFF、#0060F6。1.設(shè)置畫筆屬性的相關(guān)函數(shù)7.3.2

設(shè)置畫筆顏色字符串RGB整數(shù)值RGB小數(shù)值十六進(jìn)制白色white(255,255,255)(1,1,1)#FFFFFF黃色yellow(255,255,0)(1,1,0)#FFFF00洋紅magenta(255,0,255)(1,0,1)#FF00FF青色cyan(0,255,255)(0,1,1)#00FFFF藍(lán)色blue(0,0,255)(0,0,1)#0000FF黑色black(0,0,0)(0,0,0)#000000海貝色seashell(255,245,238)(1,0.96,0.93)#FFF5EE金色gold(255,215,0)(1,0.84.0)#FFD700粉紅色pink(255,192,203)(1,0.75,0.80)#FFC0CB棕色brown(165,42,42)(0.65,0.16,0.16)#A22A2A紫色purple(160,32,240)(0.63,0.13,0.94)#A020F0番茄色tomato(255,99,71)(1,0.39,0.28)#FF6347常見顏色的表現(xiàn)形式1.設(shè)置畫筆屬性的相關(guān)函數(shù)7.3.2

設(shè)置畫筆設(shè)置畫筆顏色的示例代碼如下。importturtleturtle.color('pink')#使用字符串方式表示的顏色turtle.color('#A22A2A')#使用十六進(jìn)制方式表示的顏色turtle.colormode(1.0) #使RGB小數(shù)值模式turtle.color((1,1,0))turtle.colormode(255) #使用RGB整數(shù)值模式turtle.color((165,42,42))turtle.done()1.設(shè)置畫筆屬性的相關(guān)函數(shù)7.3.2

設(shè)置畫筆2.設(shè)置畫筆狀態(tài)的相關(guān)函數(shù)turtle庫中的畫筆分為提起(UP)和放下(DOWN)兩種狀態(tài)。只有畫筆為放下狀態(tài)時,移動畫筆,畫布上才會留下痕跡。使用penup()和pendown()函數(shù)可以設(shè)置畫筆狀態(tài),示例如下:importturtleturtle.penup() #提起畫筆turtle.pendown() #放下畫筆turtle.done()7.3.3

繪制圖形在畫筆狀態(tài)為放下時,通過移動畫筆可以在畫布上繪制圖形。此時可以將畫筆想象成一只海龜:海龜落在畫布上,它可以向前、向后、向左、向右移動,海龜爬動時在畫布上留下痕跡,痕跡即為所繪圖形。7.3.3

繪制圖形為了使圖形出現(xiàn)在理想的位置,需要了解turtle的坐標(biāo)體系。turtle的坐標(biāo)體系以窗口中心為原點,右方為默認(rèn)朝向,原點右側(cè)為x軸正方向,原點上方為y軸正方向。7.3.3

繪制圖形1.移動控制函數(shù)移動控制函數(shù)包括forward()、backward()和goto()函數(shù),分別用于控制畫筆向前、向后或者向指定位置移動,這些函數(shù)的語法格式如下。forward(distance) #向前移動backward(distance) #向后移動goto(x,y=None) #移動到指定位置函數(shù)forward()和backward()的參數(shù)distance用于指定畫筆移動的距離,單位為像素;函數(shù)goto()的參數(shù)x、y分別表示目標(biāo)位置的橫坐標(biāo)和縱坐標(biāo)。7.3.3

繪制圖形2.角度控制函數(shù)角度控制函數(shù)用于更改畫筆朝向,包括right()、left()和seth(),這些函數(shù)的語法格式如下。right(degree) #向右轉(zhuǎn)動left(degree) #向左轉(zhuǎn)動seth(angle) #向某個方向轉(zhuǎn)動函數(shù)right()和left()的參數(shù)degree用于指定畫筆向右與向左的角度。7.3.3

繪制圖形函數(shù)seth()的參數(shù)angle用于設(shè)置畫筆在坐標(biāo)系中的角度。angle以x軸正向為0°,以逆時針方向為正,角度從0°逐漸增大;以順時針方向為負(fù),角度從0°逐漸減小,角度與坐標(biāo)系的關(guān)系如圖所示。2.角度控制函數(shù)7.3.3

繪制圖形例如,繪制邊長為200像素的正方形,具體代碼如下。importturtleturtle.forward(200) #向前移動200像素turtle.seth(-90) #調(diào)整畫筆朝向,使畫筆朝向-90°方向turtle.forward(200) #向前移動200像素turtle.right(90) #調(diào)整畫筆朝向,向右轉(zhuǎn)動90°turtle.forward(200) #向前移動200像素turtle.left(-90) #調(diào)整畫筆朝向,向左轉(zhuǎn)動-90°turtle.forward(200) #向前移動200像素turtle.right(90) #調(diào)整畫筆朝向,向右轉(zhuǎn)動90°turtle.done()2.角度控制函數(shù)7.3.3

繪制圖形3.圖形繪制函數(shù)turtle庫中提供了circle()函數(shù),使用該函數(shù)可繪制以當(dāng)前坐標(biāo)為圓心,以指定像素值為半徑的圓或弧。circle()函數(shù)的語法格式如下。circle(radius,extent=None,steps=None)參數(shù)radius用于設(shè)置半徑;extent用于設(shè)置弧的角度。7.3.3

繪制圖形3.圖形繪制函數(shù)radius和extent的取值可以是正數(shù),也可以是負(fù)數(shù),具體可以分成以下幾種情況:當(dāng)radius為正數(shù)時,畫筆以原點為起點向上繪制弧線;radius為負(fù)數(shù)時,畫筆以原點為起點向下繪制弧線。當(dāng)extent為正數(shù)時,畫筆以原點為起點向右繪制弧線;extent為負(fù)數(shù)時,畫筆以原點為起點向左繪制弧線。7.3.3

繪制圖形3.圖形繪制函數(shù)假設(shè)繪制半徑為90或-90、角度為60°或-60°的弧線,繪制效果如圖所示。7.3.3

繪制圖形3.圖形繪制函數(shù)參數(shù)steps用于設(shè)置步長,它的取值可以是整數(shù)或None。默認(rèn)值為None,表示該參數(shù)無效。若參數(shù)steps的值為正數(shù),則使用circle()函數(shù)可以繪制一個有N條邊的正多邊形;若參數(shù)steps的值為負(fù)數(shù),則使用circle()函數(shù)不會繪制圖形。實例:繪制幾何圖形7.47.4實例:繪制幾何圖形本實例要求編寫程序,借助turtle庫繪制一些幾何圖形,效果如圖所示。7.4實例:繪制幾何圖形這里以正三角形為例,分析每個圖形的具體繪制過程,具體內(nèi)容如下。(1)移動畫筆的位置。(2)繪制圖形。時期時間工具:time庫7.57.5

時期時間工具:time庫1.

time()函數(shù)time()函數(shù)用于返回一個浮點數(shù)表示的時間戳,其中時間戳是指從世界標(biāo)準(zhǔn)時間的1970年1月1日00:00:00到當(dāng)前時間的總秒數(shù)。例如,使用time()函數(shù)獲取當(dāng)前時間的時間戳,示例如下:importtimeprint(time.time())需要注意的是,time()函數(shù)返回的時間戳與系統(tǒng)時間相關(guān),每次運行以上代碼后得到的時間戳可能會有所出入,因此以上結(jié)果僅作參考。同樣地,后續(xù)提到的與時間相關(guān)的函數(shù),也需要格外關(guān)注其與系統(tǒng)時間的關(guān)聯(lián)性,以獲得更加準(zhǔn)確的結(jié)果。7.5

時期時間工具:time庫2.localtime()和gmtime()函數(shù)localtime()和gmtime(),用于獲取結(jié)構(gòu)化時間,從而幫助我們更直觀地了解時間的各個部分。localtime()和gmtime()函數(shù)的語法格式如下:localtime([secs])gmtime([secs])localtime()和gmtime()函數(shù)都能將時間戳轉(zhuǎn)換為以元組表示的時間對象(struct_time),不過localtime()得到的是本地時間,而gmtime()得到的是世界統(tǒng)一時間(UniversalTimeCoordinated,縮寫為UTC)。7.5

時期時間工具:time庫使用localtime()函數(shù)獲取結(jié)構(gòu)化時間,示例如下:importtimeprint(time.localtime())#獲取結(jié)構(gòu)化時間,默認(rèn)使用當(dāng)前時間的時間戳print(time.localtime(36.36))#獲取結(jié)構(gòu)化時間,使用指定的時間戳使用gmtime()函數(shù)獲取結(jié)構(gòu)化時間,示例如下:importtimeprint(time.gmtime())print(time.gmtime(34.54))2.localtime()和gmtime()函數(shù)7.5

時期時間工具:time庫元素含義取值tm_year年4位數(shù)字tm_mon月1~12tm_mday日1~31tm_hour時0~23tm_min分0~59tm_sec秒0~61,60或61是閏秒tm_wday一周的第幾日0~6,0為周一,其他數(shù)字依此類推tm_yday一年的第幾日1~366tm_isdst夏令時1表示夏令時,0表示非夏令時,-1表示不確定時間對象元組中元素的含義與取值

2.localtime()和gmtime()函數(shù)7.5

時期時間工具:time庫3.strftime()和asctime()函數(shù)(1)strftime()函數(shù)用于將時間對象按照指定格式轉(zhuǎn)換為可讀性強(qiáng)的時間字符串,該函數(shù)的語法格式如下:strftime(format,p_tuple=None)參數(shù)format表示時間格式的字符串,字符串中包含一些時間格式控制符;參數(shù)p_tuple為時間對象,默認(rèn)值為當(dāng)前時間,即localtime()函數(shù)返回的時間對象。7.5

時期時間工具:time庫(1)strftime()函數(shù)時間格式控制符是time庫預(yù)定義的,用于控制不同時間或時間成分,time庫中常用的時間格式控制符及其功能說明如表所示。時間格式控制符功能說明%Y四位數(shù)的年份,取值范圍為0001~9999%m月份,取值范圍為01~12%d月中的一天%B本地完整的月份名稱,比如January%b本地簡化的月份名稱,比如Jan%a本地簡化的周日期%A本地完整周日期%H24小時制小時數(shù),取值范圍為0~23%l12小時制小時數(shù),取值范圍為01~12%p上午或下午,取值分別為AM或PM%M分鐘數(shù),取值范圍為00~59%S秒,取值范圍為00~593.strftime()和asctime()函數(shù)7.5

時期時間工具:time庫(1)strftime()函數(shù)例如,使用strftime()格式化時間字符串,將當(dāng)前時間對應(yīng)的時間對象按照“年-月-日時:分:秒”格式輸出,示例如下:importtimenow_string=time.strftime("%Y-%m-%d%H:%M:%S")print(now_string)3.strftime()和asctime()函數(shù)7.5

時期時間工具:time庫(1)strftime()函數(shù)若只使用部分時間格式控制符,可僅對時間信息中的相關(guān)部分進(jìn)行格式化與輸出。例如只設(shè)定控制時分秒的3個格式符,則只輸出24小時制的時分秒,示例代碼如下:importtimenow_string=time.strftime('%H:%M:%S')#格式化部分時間信息print(now_string)3.strftime()和asctime()函數(shù)7.5

時期時間工具:time庫(2)asctime()函數(shù)asctime()函數(shù)同樣用于將時間對象轉(zhuǎn)換為可讀性強(qiáng)的時間字符串,但它只能轉(zhuǎn)換為“SatJan1321:56:342018”這種形式。asctime()函數(shù)的語法格式如下:asctime(p_tuple=None)3.strftime()和asctime()函數(shù)7.5

時期時間工具:time庫(2)asctime()函數(shù)使用asctime()函數(shù)返回格式化的時間字符串,示例如下:importtimenow_string=time.asctime()#將本地時間對應(yīng)的時間對象轉(zhuǎn)換為時間字符串print(now_string)gmtime=time.gmtime()#將世界統(tǒng)一時間對應(yīng)的時間對象轉(zhuǎn)換為時間字符串print(time.asctime(gmtime))3.strftime()和asctime()函數(shù)7.5

時期時間工具:time庫4.

ctime()函數(shù)ctime()函數(shù)用于將一個時間戳轉(zhuǎn)換為“SatJan1321:56:342018”這種形式的時間字符串,結(jié)果等同于time.asctime()函數(shù),若ctime()函數(shù)沒有傳入任何參數(shù),則默認(rèn)使用time()函數(shù)的結(jié)果作為參數(shù)。示例如下:importtimeprint(time.ctime())#將當(dāng)前時間的時間戳轉(zhuǎn)換為時間字符串print(time.ctime(36.36))#將指定的時間戳轉(zhuǎn)換為時間字符串7.5

時期時間工具:time庫5.

strptime()函數(shù)strptime()函數(shù)用于將格式化的時間字符串轉(zhuǎn)化為時間對象,該函數(shù)是strftime()函數(shù)的反向操作。strptime()函數(shù)的語法格式如下:strptime(string,format)使用strptime()函數(shù)將格式化的時間字符串轉(zhuǎn)化為時間對象,示例如下:importtimeprint(time.strptime('Sat,11Apr202311:54:42','%a,%d%b%Y%H:%M:%S'))print(time.strptime('11:54:42','%H:%M:%S'))7.5

時期時間工具:time庫6.

sleep()函數(shù)sleep()函數(shù)用于讓程序進(jìn)入睡眠狀態(tài),使程序暫時掛起,等待一定時間后再繼續(xù)執(zhí)行。sleep()函數(shù)接收一個以秒為單位的浮點數(shù)作為參數(shù),使用該參數(shù)控制程序掛起的時長。例如,使用sleep()函數(shù)讓程序睡眠3秒,代碼如下:importtimeprint('開始')time.sleep(3)print('結(jié)束')實例:二十四節(jié)氣倒計時7.6本實例要求運用前面所學(xué)的知識,編寫一個二十四節(jié)氣倒計時程序,整個程序主要分為引導(dǎo)語和倒計時兩部分,引導(dǎo)語部分用于展示中文和英文的引導(dǎo)語,倒計時部分用于展示倒計時數(shù)字、某個節(jié)氣的名稱以及的古詩詞,每隔一秒會切換到下一個節(jié)氣的名稱以及對應(yīng)的古詩詞。7.6實例:二十四節(jié)氣倒計時引導(dǎo)語與倒計時的效果如圖所示。7.6實例:二十四節(jié)氣倒計時本實例的實現(xiàn)思路可以分成以下步驟:1.

展示引導(dǎo)語2.

展示倒計時(1)準(zhǔn)備二十四節(jié)氣用到的數(shù)據(jù)。(2)繪制倒計時畫面。(3)實現(xiàn)倒計時的功能。7.6實例:二十四節(jié)氣倒計時中文分詞工具:jieba庫7.77.7中文分詞工具:jieba庫jieba是一款用于實現(xiàn)中文分詞的第三方庫。中文分詞指的是將中文語句或語段拆成若干漢語詞匯。例如,“我是一個學(xué)生”經(jīng)分詞系統(tǒng)處理之后,該語句被分成“我”“是”“一個”“學(xué)生”這4個中文詞匯。jieba庫支持以下三種分詞模式。(1)精確模式:試圖將句子最精準(zhǔn)地切開。(2)全模式:將句子中所有可以成詞的詞語都掃描出來,速度非???。(3)搜索引擎模式:在精確模式的基礎(chǔ)上對長詞再次切分,適用于建立搜索引擎的索引。7.7中文分詞工具:jieba庫函數(shù)功能說明cut(s)以精準(zhǔn)模式對文本s進(jìn)行分詞,返回一個可迭代對象cut(s,cut_all=True)默認(rèn)以全模式對文本s進(jìn)行分詞,返回文本s中出現(xiàn)的所有詞cut_for_search(s)以搜索引擎模式對文本s進(jìn)行分詞lcut(s)以精準(zhǔn)模式對文本s進(jìn)行分詞,分詞結(jié)果以列表形式返回lcut(s,cut_all=True)以全模式對文本s進(jìn)行分詞,分詞結(jié)果以列表形式返回lcut_for_search(s)以搜索引擎模式對文本s進(jìn)行分詞,分詞結(jié)果以列表形式返回jieba庫的分詞函數(shù)7.7中文分詞工具:jieba庫下面演示采用三種模式對中文語句進(jìn)行分詞的效果,示例如下:importjiebaseg_list=jieba.cut("我打算到中國科學(xué)研究院圖書館學(xué)習(xí)",cut_all=True)print("【全模式】:"+"/".join(seg_list))#全模式seg_list=jieba.lcut("我打算到中國科學(xué)研究院圖書館學(xué)習(xí)")print("【精確模式】:"+"/".join(seg_list))#精確模式#搜索引擎模式seg_list=jieba.cut_for_search("我打算到中國科學(xué)研究院圖書館學(xué)習(xí)")print("【搜索引擎模式】:"+",".join(seg_list))7.7中文分詞工具:jieba庫jieba實現(xiàn)分詞的基礎(chǔ)是詞庫,jieba的詞庫存儲在jieba庫下的dict文件中,該文件中存儲了中文詞庫以及每個詞的詞頻、詞性等信息。利用jieba庫的add_word()函數(shù)可以向詞庫中增加新詞。新詞添加之后,進(jìn)行分詞時不會對該詞進(jìn)行切分。例如:jieba.add_word("好天氣")#向詞庫增加新詞seg_list=jieba.lcut("今天真是個好天氣")print(seg_list)多學(xué)一招:安裝第三方庫第三方庫不能直接在程序中導(dǎo)入與使用,而是需要提前安裝到當(dāng)前的開發(fā)環(huán)境中。第三方庫的安裝需要借助pip工具,pip工具是一個通用的Python

包或庫的管理工具,它提供了查找、下載、安裝、卸載Python包或庫的功能。默認(rèn)情況下,安裝Python解釋器時會自動安裝pip工具。多學(xué)一招:安裝第三方庫使用pip工具安裝庫的命令如下。pipinstall庫名

#安裝最新版本的庫pipinstall庫名==版本號#安裝指定版本的庫

例如,打開命令行工具,安裝最新版本的jieba和wordcloud庫,具體命令如下。pipinstalljieba#安裝最新版本的jieba庫pipinstallwordcloud#安裝最新版本的wordcloud庫多學(xué)一招:安裝第三方庫如果想驗證開發(fā)環(huán)境中是否有這兩個庫,那么可以在命令行窗口中輸入piplist命令進(jìn)行查看。例如,使用piplist命令查看當(dāng)前開發(fā)環(huán)境中已經(jīng)安裝的庫,命令及執(zhí)行結(jié)果如下所示。C:\Users\itcast>piplistPackageVersion----------------------……jieba 0.42.1wordcloud 1.8.1多學(xué)一招:安裝第三方庫需要注意的是,pip是在線工具,它只有在聯(lián)網(wǎng)的狀態(tài)下才可以下載相應(yīng)的庫資源,若網(wǎng)絡(luò)未連接或網(wǎng)絡(luò)環(huán)境不佳,則pip工具將無法順利安裝第三方庫。實例:出場人物統(tǒng)計7.87.8

實例:出場人物統(tǒng)計《西游記》是我國古代第一部浪漫主義章回體長篇神魔小說,也是我國古典四大名著之一。全書主要描寫了孫悟空、唐僧、豬八戒、沙僧和白龍馬一同西行取經(jīng),歷經(jīng)九九八十一難到達(dá)西天見到如來佛祖,最終五圣成真的故事?!段饔斡洝菲薮?、出場人物繁多。7.8

實例:出場人物統(tǒng)計本實例要求讀者編寫程序,讀取xiyouji.txt文件并統(tǒng)計《西游記》小說中的關(guān)鍵人物(指出場次數(shù)排在前10名的人物的出場次數(shù)。7.8

實例:出場人物統(tǒng)計本實例的實現(xiàn)思路可以分為以下步驟:(1)獲取小說的全部內(nèi)容(2)統(tǒng)計中文詞語及數(shù)量(3)刪除無意義的詞語(4)輸出中文詞語及數(shù)量詞云工具:WordCloud庫7.97.9詞云工具:WordCloud庫WordCloud是Python的第三方庫之一,專門用于生成詞云圖。詞云圖是一種可視化方式,可以將文本中出現(xiàn)頻率高的關(guān)鍵詞制作成不同形狀的圖形,例如云朵、圓形、矩形、心形、星形等。在生成詞云圖的過程中,通常會根據(jù)詞頻自動調(diào)整每個詞的大小,讓詞頻高的詞匯展示的更大,詞頻低的展示的較小,使人們更加直觀地了解文本的主題和重點。WordCloud庫以文本中詞語出現(xiàn)的頻率作為參數(shù)來繪制詞云圖,并支持對詞云圖的形狀、顏色和大小等屬性進(jìn)行設(shè)置。利用WordCloud庫生成詞云圖主要包含以下三個步驟:(1)利用WordCloud()方法創(chuàng)建詞云對象。(2)利用WordCloud對象的generate()方法加載詞云圖用到的文本。(3)利用WordCloud對象的to_file()方法生成詞云圖。7.9詞云工具:WordCloud庫參數(shù)功能說明width指定詞云對象生成圖片的寬度,默認(rèn)為400像素height指定詞云對象生成圖片的高度,默認(rèn)為200像素min_font_size指定詞云中字體的最小字號,默認(rèn)為4號max_font_size指定詞云中字體的最大字號,默認(rèn)根據(jù)高度自動調(diào)節(jié)font_step指定詞云中字體字號的步間隔,默認(rèn)為1WordCloud()方法在創(chuàng)建詞云對象時可通過參數(shù)設(shè)置詞云的屬性。WordCloud()方法的常用參數(shù)

7.9詞云工具:WordCloud庫參數(shù)功能說明font_path指定字體文件的路徑,默認(rèn)為當(dāng)前路徑max_words指定詞云顯示的最大單詞數(shù)量,默認(rèn)為200stop_words指定詞云的排除詞列表,即不顯示的單詞列表background_color指定詞云圖片的背景顏色,默認(rèn)為黑色mask指定詞云形狀,默認(rèn)為長方形WordCloud()方法在創(chuàng)建詞云對象時可通過參數(shù)設(shè)置詞云的屬性。WordCloud()方法的常用參數(shù)

7.9詞云工具:WordCloud庫generate()方法需要接收一個字符串作為參數(shù),字符串中的內(nèi)容便是詞云圖用到的文本。若字符串中的內(nèi)容全部為漢字,那么在創(chuàng)建詞云對象時必須通過font_path參數(shù)指定字體文件的路徑,不指定的話將無法正常顯示漢字。7.9詞云工具:WordCloud庫to_file()方法用于以圖片形式輸出詞云圖,該方法接收一個表示圖片文件名的字符串作為參數(shù),圖片的格式可以為PNG或JPEG格式。7.9詞云工具:WordCloud庫以xiyouji.txt文件和孫悟空圖片wukong.png為例,演示如何通過wordcloud庫生成其他形狀的詞云圖片,代碼如下:

importwordcloud#創(chuàng)建詞云對象w=wordcloud.WordCloud(font_path='AdobeHeitiStd-Regular.otf',max_

溫馨提示

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

評論

0/150

提交評論