『壹』 python操作文本文件
在磁碟上讀寫文件之前,必須先打開這個文件。打開文件就需要提供文件的路徑。
在與Python程序同一個目錄下,我們有一個名為 pi.txt 的文件,它的內容如下:
現在使用Python來打開和關閉它:
執行此程序不會有任何輸出,這表示著打開和關閉文件都得到了正確執行。
可以看到,使用 open() 函數打開文件,參數為文件名(或文件路徑);該函數會返回一個文件句柄,文件句柄並不會實際保存文件的內容,而是代表著一種操作,在上面的例子中,文件句柄被賦值給變數 fhand 。
打開文件後,程序具有讀(默認)該文件的許可權。
最後,使用文件句柄的 close() 方法關閉文件。這非常重要,因為使用完而沒有關閉的文件會佔用內存或造成安全問題。
如果Python找不到該文件,則會返回錯誤,比如下面這樣:
Python提示我們沒有相應的文件或者目錄: 'pii.txt'。
打開文件後就可以對文件進行操作:
fhand.read() 方法將文件內容作為一個字元串返回。
文件中的每一行末尾使用換行符 \n 表示換行,例子中方法 rstrip() 去掉文本中的換行符,然後輸出。
程序的運行效果如下:
如果在文件關閉之前程序發生BUG意外退出,則文件不會關閉,為了避免此類事件的發生,可以使用 with 語句:
with 語句的特點是即便在操作文件時發生錯誤,文件也會自動被清理。
fhand.read() 雖然可以讀取文本內容,但是當我們想要逐行處理文件內容,或者文件很大而無法一次性載入進內存的時候,就不適用了。
可以使用 for 語句逐行處理文件內容:
本程序中將文件名保存在變數 filename 中。
打開文件後,使用 for 語句按行讀取文件內容。例子中,每次循環依次取一行文本以字元串的格式保存在變數 line 中,每次循環中變數 count 自增1。
這個程序的作用是,打開程序所在目錄的 when_old.txt 文件,然後統計行數,並輸出結果。
when_old.txt 文件的內容是:
可以使用其他方法操作字元串 line :
程序將以 'And' 開頭的行列印出來。
打開文件後,默認的許可權是讀(r),如果要寫文件,則需要使用寫(w)或者追加(a)許可權。
w許可權,打開一個文件用於寫入。如果該文件存在,則覆蓋該文件;如果該文件不存在,則創建該文件。
a許可權,打開一個文件用於追加。如果該文件存在,在文件末尾追加;如果該文件不存在,則創建該文件。
下面是一個使用w許可權打開文件的例子:
例子中使用w許可權打開該文件,並寫入兩行。(如果該文件存在,則內容會被覆蓋)
fhand.write() 不會自動添加換行符,所以如果需要換行,需在末尾添加 \n 。
下面我們寫一個統計文件中詞頻的程序。
它會統計文件中各個詞的出現的次數,然後由高到低顯示出前5個詞。
首先我們完成打開和關閉文件的程序內容:
在例子中,由用戶輸入文件名,並且使用異常捕獲以處理文件打開時的錯誤。
下面對內容進行統計:
這個程序:
如此,我們就在字典中存放了 單詞:次數 的鍵值對。
由於字典不能保存順序,所以不能對其進行排序。為此,將每個鍵值對都添加到一個列表中:
在列表 word_list 中,每一項都是一個元組,每個元組第一個值是單詞出現的次數,第二個值是單詞內容。
對其進行逆向(由大到小)排序:
列印最終結果:
整個程序如下:
下面是程序運行結果的示例:
『貳』 python如何利用已有的語料庫,對一篇新聞文本進行分詞
把自己的語料庫(sogou文本分類語料庫)放在LTK_DATA/corpora/目錄下;
然後在命令行輸入以下之後,即可看到所有的txt文件名列表了。
『叄』 python文本菜單的程序
#!/usr/bin/envpython3#py3.6+
"""
#要求做一個系統菜單,輸入數字進入對應菜單,包含以下內容,正常操作不能報錯:
#菜單1:列印所有產品價格和庫存
#菜單2:修改產品價格
#菜單3:增加庫存
#菜單4:購買指定數量產品
#菜單5:增加新產品作為思考題
#菜單0:退出當前系統
"""
price={'vegetables':'3','eggs':'4','rice':'2'}#價格dict
stock={'vegetables':'0','eggs':'0','rice':'0'}#庫存dict
tip='''
1:列印所有產品價格和庫存
2:修改產品價格
3:增加庫存
4:購買指定數量產品
5:增加新產品作為思考題
0:退出當前系統
'''
defmain():
whileTrue:
globalprice,stock
a=input(f'Pleaseenteranumber:{tip} ').strip()
ifa=='0':
print('Exit!')
break
elifa=='1':
style='{:15}{:6}{:5}'
print(style.format('Name','price','stock'))
for(n,p),(_,s)inzip(price.items(),stock.items()):
print(style.format(n,p,s))
print()
elifa=='2':
whileTrue:
n=input(':')
ifninprice:
break
print('invalidinput!Shouldbe"{}".'.format(
'"or"'.join(price)))
p=input('enteranewpriceofthisproct:')
price[n]=p
elifa=='3':
whileTrue:
n=input(':')
ifninstock:
break
print('Invalidinput!Shouldbe"{}".'.format(
'"or"'.join(stock)))
whileTrue:
s=input(':')
try:
s=int(s)
break
except:
print('Invalidinput,mustbeainteger!')
stock[n]=str(int(stock[n])+s)
elifa=='4':
whileTrue:
n=input('enteraproctnametobuyit:')
ifninstock:
break
print('Invalidinput!Shouldbe"{}".'.format(
'"or"'.join(stock)))
whileTrue:
s=input('enteraintegerforhowmanytobuy:')
try:
s=int(s)
ifs<=0ors>int(stock[n]):
raise
break
except:
print('Invalidinput,mustbeapositiveintegerand'
'lessthan{}!'.format(stock[n]))
y=input('Youwanttobuy{}X{},whichcost{}?(y)/n'.format(
n,s,int(price[n])*s))
ify.strip().lower()in('y',''):
stock[n]=str(int(stock[n])-s)
print('Youpay{}andget{}{}'.format(int(price[n]*s),s,n))
elifa=='5':
print('Uncomplete... ')
if__name__=='__main__':
main()
『肆』 python寫演算法不好
基於以下三個原因,我們選擇Python作為實現機器學習演算法的編程語言:(1) python的語法清晰;(2) 易於操作純文本文件;(3) 使用廣泛,存在大量的開發文檔。
可執行偽代碼
Python具有清晰的語法結構,大家也把它稱作可執行偽代碼(executable pseudo-code)。默認安裝的Python開發環境已經附帶了很多高級數據類型,如列表、元組、字典、集合、隊列等,無需進一步編程就可以使用這些數據類型的操作。使用這些數據類型使得實現抽象的數學概念非常簡單。此外,讀者還可以使用自己熟悉的編程風格,如面向對象編程、面向過程編程、或者函數式編程。
Python語言處理和操作文本文件非常簡單,非常易於處理非數值型數據。Python語言提供了豐富的正則表達式函數以及很多訪問Web頁面的函數庫,使得從HTML中提取數據變得非常簡單直觀。
Python比較流行
Python語言使用廣泛,代碼範例也很多,便於讀者快速學習和掌握。此外,在開發實際應用程序時,也可以利用豐富的模塊庫縮短開發周期。
在科學和金融領域,Python語言得到了廣泛應用。SciPy和NumPy等許多科學函數庫都實現了向量和矩陣操作,這些函數庫增加了代碼的可讀性,學過線性代數的人都可以看懂代碼的實際功能。另外,科學函數庫SciPy和NumPy使用底層語言(C和Fortran)編寫,提高了相關應用程序的計算性能。本書將大量使用Python的NumPy。
Python的科學工具可以與繪圖工具Matplotlib協同工作。Matplotlib可以繪制2D、3D圖形,也可以處理科學研究中經常使用到的圖形,所以本書也將大量使用Matplotlib。
Python開發環境還提供了互動式shell環境,允許用戶開發程序時查看和檢測程序內容。
Python開發環境將來還會集成Pylab模塊,它將NumPy、SciPy和Matplotlib合並為一個開發環境。在本書寫作時,Pylab還沒有並入Python環境,但是不遠的將來我們肯定可以在Python開發環境找到它。
Python語言的特色
諸如MATLAB和Mathematica等高級程序語言也允許用戶執行矩陣操作,MATLAB甚至還有許多內嵌的特徵可以輕松地構造機器學習應用,而且MATLAB的運算速度也很快。然而MATLAB的不足之處是軟體費用太高,單個軟體授權就要花費數千美元。雖然也有適合MATLAB的第三方插件,但是沒有一個有影響力的大型開源項目。
Java和C等強類型程序設計語言也有矩陣數學庫,然而對於這些程序設計語言來說,最大的問題是即使完成簡單的操作也要編寫大量的代碼。程序員首先需要定義變數的類型,對於Java來說,每次封裝屬性時還需要實現getter和setter方法。另外還要記著實現子類,即使並不想使用子類,也必須實現子類方法。為了完成一個簡單的工作,我們必須花費大量時間編寫了很多無用冗長的代碼。Python語言則與Java和C完全不同,它清晰簡練,而且易於理解,即使不是編程人員也能夠理解程序的含義,而Java和C對於非編程人員則像天書一樣難於理解。
所有人在小學二年級已經學會了寫作,然而大多數人必須從事其他更重要的工作。
——鮑比·奈特
也許某一天,我們可以在這句話中將「寫作」替代為「編寫代碼」,雖然有些人對於編寫代碼很感興趣,但是對於大多數人來說,編程僅是完成其他任務的工具而已。Python語言是高級編程語言,我們可以花費更多的時間處理數據的內在含義,而無須花費太多精力解決計算機如何得到數據結果。Python語言使得我們很容易表達自己的目的。
Python語言的缺點
Python語言唯一的不足是性能問題。Python程序運行的效率不如Java或者C代碼高,但是我們可以使用Python調用C編譯的代碼。這樣,我們就可以同時利用C和Python的優點,逐步地開發機器學習應用程序。我們可以首先使用Python編寫實驗程序,如果進一步想要在產品中實現機器學習,轉換成C代碼也不困難。如果程序是按照模塊化原則組織的,我們可以先構造可運行的Python程序,然後再逐步使用C代碼替換核心代碼以改進程序的性能。C++ Boost庫就適合完成這個任務,其他類似於Cython和PyPy的工具也可以編寫強類型的Python代碼,改進一般Python程序的性能。
如果程序的演算法或者思想有缺陷,則無論程序的性能如何,都無法得到正確的結果。如果解決問題的思想存在問題,那麼單純通過提高程序的運行效率,擴展用戶規模都無法解決這個核心問題。從這個角度來看,Python快速實現系統的優勢就更加明顯了,我們可以快速地檢驗演算法或者思想是否正確,如果需要,再進一步優化代碼。
『伍』 python編程是啥
python編程是啥
python編程是啥,Python是一種代表簡單主義思想的語言,Python崛起更加符合開發者的習慣和口味。下面我給大家分享一下關於python編程是啥的相關信息。
編程語言領域Python成為了一個耀眼的新星,Python崛起的原因與其本身特點有關,也許它是更加符合開發者的習慣和口味。現在有一種聲音說Python將會超越Java成全球最流行編程語言。
這些年,編程語言的發展進程很快,在商業公司、開源社區兩股力量的共同推動下,涌現出諸如Go、Swift這類後起之秀,其中最為耀眼的是Python。
知名開發者網站Stackoverflow撰文指出,從2012至2017年編程語言Python成為開發者使用增長最快的主流編程語言,其中2017年增長率達到了27%,一舉超過包括Java、C#、PHP、C++在內的所有同類。另據高盛集團發布的一份《2017調查報告》針對全球數千名高校實習生的調查中,當問到你認為「哪個語言在未來會更重要」時,被調查的80、90後優秀年輕開發者中72%選了Python。
語言的使用者是一直被譽為業界上游「源頭活水」的開發者,其重要程度從各大科技巨頭公司每年例行召開的開發者大會上可見一斑。對於開發者群體而言最重要的事物有兩個,一是平台,二就是編程語言。編程語言Python為什麼能夠獲得全球眾多開發者的青睞?它的崛起給開發者世界帶來了什麼變化?
成功的一半源於好的開始
在主流編程語言當中,Python並不是一個「新人」,它的歷史超過25年,但真正風靡之時卻是最近幾年,所以「後起之秀」的稱呼實至名歸。Python的起源是19 89年,其發明者荷蘭人程序員吉多范羅蘇姆受ABC語言的啟發計劃開發一個新的腳本解釋器,由此邁出了Python項目的起點。
Python能夠真正風靡的原因之一是有一個好的起點。它的起步很穩,避開了版權糾紛,且搭上了開源運動的順風車。在那個年代,商業版權一直是熱門 事件,業界史上第一個軟體領域重大官司AT&T和伯克利BSD的Unix版權案打得天昏地暗,該案的結局直接促成了BSD的開源分支、Linux的誕生以及震驚世界的自由軟體運動。
Python最初的版權歸屬是CWI(阿姆斯特丹的國家數學與計算機科研學會),這與吉多早年在該機構工作有關,後來吉多受雇於CNRI(維吉尼亞州的國家創新研究公司),Python權屬轉移至此。那時自由軟體運動已經開始,在CNRI期間發布的1.6至2.1多個版本的`Python許可證是一種與GPL並不兼容且類似於BSD的開源許可,CNRI因受到自由軟體基金會的壓力釋放了Python的原許可證,吉多由此掌握了主導權並起草了新的許可證。他改變了原許可證與GPL的不兼容,此舉獲得了自由軟體基金會頒發的自由軟體進步獎。再後來吉多和他的團隊成立了Python軟體基金會,將版權與許可證置於其下。
創始人吉多范羅蘇姆的心思縝密與靈活處事為Python最初的發展營造了良好的環境,包括幾次權屬的轉移、起草新的許可證、機智地與自由軟體陣營斡旋,最後安全融入開源的大潮。這一切為Python此後十多年裡逐漸成長為主流編程語言贏得了契機。
「人生苦短,我用Python」並非一句戲言
Python崛起的原因之二與其本身特點有關,或者說,其長期維護演進形成的獨特風格迎合了大多數開發者的口味。在開發者社群流行著一句玩笑「人生苦短,我用Python」(原話為」 Life is short, you need Python」),這句看似戲言的話實際上恰恰反映了Python的語言特性與其在開發者心裡的價值分量。
除了包涵大多數主流編程語言的優點(面向對象、語法豐富)之外,Python的直觀特點是簡明優雅、易於開發,用盡量少的代碼完成更多工作。盡管Python是一種解釋型語言,與傳統的編譯型語言相比降低了機器執行效率,但是處理器的處理速率與環境速率(比如網路環境)的差異在大多數場景中完全抵消了上述代價;犧牲部分運行效率帶來的好處則是提升了開發效率,在跨平台的時候無需移植和重新編譯。 所以Python的顯著優點在於速成,對於時間短、變化快的需求而言尤為勝任。
Python最強大的地方體現在它的兩個外號上,一個叫「內置電池」,另一個是「膠水語言」。前者的意思是,Python官方本身提供了非常完善的標准代碼庫,包括針對網路編程、輸入輸出、文件系統、圖形處理、資料庫、文本處理等等。代碼庫相當於已經編寫完成打包供開發者使用的代碼集合,程序員只需通過載入、調用等操作手段即可實現對庫中函數、功能的利用,從而省去了自己編寫大量代碼的過程,讓編程工作看起來更像是在「搭積木」。除了內置庫,開源社區和獨立開發者長期為Python貢獻了豐富大量的第三方庫,其數量遠超其他主流編程語言,可見Python的語言生態已然相當壯大。
「膠水語言」是Python的另一個亮點。Python本身被設計成具有可擴展性,它提供了豐富的API和工具,以便開發者能夠輕松使用包括C、C++等主流編程語言編寫的模塊來擴充程序。就像使用膠水一樣把用其他編程語言編寫的模塊粘合過來,讓整個程序同時兼備其他語言的優點,起到了黏合劑的作用。正是這種多面手的角色讓Python近幾年在開發者世界中名聲鵲起,因為互聯網與移動互聯時代的需求量急速倍增,大量開發者亟需一種極速、敏捷的工具來助其處理與日俱增的工作,Python發展至今的形態正好滿足了他們的願望。
Python的影響
從兩個著名編程語言排行網站TIOBE和PYPL的最新數據來看,Java與Python的排名分別位於第1和第5、第1和第2。關於兩個網站的排行機制我們不得而知,但從開發者社群的相關評論中可以認為PYPL更能反映編程語言在開發者群體中的流行程度。不論如何,Python的崛起已是毋庸置疑的事實,而它上面的前輩則是常年占據榜單第1,互聯網與移動時代的嬌子Java。從Stackoverflow和多個開源社區公開的數據來看,Python的用戶數量增長很快,在今後兩年超過Java成為全球最流行編程語言的可能性非常之高。
值得一提的是,那些頗有影響力的主流編程語言,其背後一般都站著科技巨頭公司,比如Java之於甲骨文、C#之於微軟、ObjecTIve-C之於蘋果。Java之所以常年第一是因為其同時還幾乎是安卓平台的御用語言,以及受益於Sun時代影響力的眷顧。Python雖曾一度為谷歌使用,但Go語言問世後隨著時間推移或將遇冷。也就是說,Python成了沒有巨頭站隊的主流編程語言,那麼它的影響力是如何維系的?為什麼還能夠保持高速成長並形成趕超Java之勢?
我們認為這與Python多年來實現較好案例與范用性有關。使用Python開發的知名案例中,包括豆瓣、果殼、知乎、Dropbox、EVE(星戰前夜)每一個都是重量級產品,這說明Python語言本身的發展已日臻完善,有著極高的穩定與可靠性保證。第二是Python的應用范圍,除了日常工具和腳本之外,還適用於Web程序、GUI開發、操作系統中間件、服務端運維等等,這些年Python的一些第三方庫在機器學習、神經網路方面活躍非凡,這也為語言本身的推廣和流行加分不少。
最後需要指出的是,Python編程思想包含強烈的黑箱思維,這意味著開發者將愈加重視模塊化和流水線式的編程工作,事實上這也是未來主流編程語言的發展趨向。隨著計算機語言的演化和開發工具集成功能日趨強大,未來的編程工作將大幅簡化。從某種角度看,Python更像是已經「邁入未來」的編程語言,其對開發者群體結構變化,以及新進開發者數量的激增,這些影響都將是深遠的。
python的作用:
1、系統編程:提供API(ApplicationProgramming
Interface應用程序編程介面),能方便進行系統維護和管理,Linux下標志性語言之一,是很多系統管理員理想的編程工具。
2、圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
3、數學處理:NumPy擴展提供大量與許多標准數學庫的介面。
4、文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
5、資料庫編程:程序員可通過遵循PythonDB-API(資料庫應用程序編程介面)規范的模塊與MicrosoftSQL Server,Oracle,Sybase,DB2,MySQL、SQLite等資料庫通信。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。
(5)python文本分類程序擴展閱讀:
python中文就是蟒蛇的意思。在計算機中,它是一種編程語言。Python(英語發音:/paθn/),是一種面向對象、解釋型計算機程序設計語言,由GuidovanRossum於19 89年底發明,第一個公開發行版發行於1991年。Python語法簡潔而清晰,具有豐富和強大的類庫。
它常被昵稱為膠水語言,它能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫。
比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C++重寫。1發展歷程編輯自從20世紀90年代初Python語言誕生至今,它逐漸被廣泛應用於處理系統管理任務和Web編程。Python已經成為最受歡迎的程序設計語言之一。
零基礎學python 要花多長時間?
答案:兩天!別不信,聽我細細道來
如何兩天學會python 編程入門基礎課程?
月31-9月1日,艾威培訓再次走進知名電子公司—明導國際,為其展開2天的Python入門課程。
明導國際(MentorGraphics)是一家從事電子設計自動化的跨國公司。於1981年創立。其總部位於美國俄勒岡州的威爾森維爾(Wilsonville)。
艾威國際培訓(Avtech Institute of Technology),源於美國,始於1998.專業從事企業級在職人員技能提升項目管理、IT管理、IT技術、雲計算大數據、需求管理、信息安全與審計,產品管理、python編程入門等培訓與各類國際認證考試提供商。進入中國16年來,已成為眾多500強企業(惠普、華為、惠普、戴爾、IBM、中興、飛利浦等)指定的培訓供應商。
Python編程入門課程非常適合零基礎的學生,不受行業限制,屬於python認證的初級階段課程。
艾威培訓根據明導電子的需求定製了兩天的python培訓課程。其主要內容包括語法基礎、Python程序流程式控制制、Python數據結構、Python函數等初級階段的內容。
艾威培訓python 5年以上資深講師用課堂理論+實驗的方式為明導國際培訓員工的python初級技能。比如說利用python處理電影列表、創建自己的分類樹模塊等。
學以致用、以學生為中心一直是艾威培訓的服務特色。除此以外,艾威培訓還提供考試報名、准考證、復習備考培訓、拿證一條龍服務。
通過python編程入門課程的培訓,學生們能夠掌握python編程語言的基礎知識,能夠看懂python語言編寫的應用程序,能夠編寫簡單的功能性程序,了解python語言可以應用的領域以及局限性。
入門很重要,老師教的好,基礎扎實了,才能一步步向數據挖掘與分析高階課程邁進,一步步成為數據分析領域的大牛!
『陸』 Python文本處理工具都有哪些
1、 NLTK — Natural Language Toolkit
搞自然語言處理的同學應該沒有人不知道NLTK吧,這兒也就不多說了。不過引薦兩本書籍給剛剛觸摸NLTK或許需求具體了解NLTK的同學: 一個是官方的《Natural Language Processing with Python》,以介紹NLTK里的功用用法為主,一起附帶一些Python常識,一起國內陳濤同學友情翻譯了一個中文版,這兒可以看到:引薦《用Python進行自然語言處理》中文翻譯-NLTK配套書;另外一本是《Python Text Processing with NLTK 2.0 Cookbook》,這本書要深入一些,會涉及到NLTK的代碼結構,一起會介紹怎麼定製自己的語料和模型等,相當不錯。
2、 Pattern
Pattern由比利時安特衛普大學CLiPS實驗室出品,客觀的說,Pattern不僅僅是一套文本處理東西,它更是一套web數據挖掘東西,囊括了數據抓取模塊(包含Google, Twitter, 維基網路的API,以及爬蟲和HTML剖析器),文本處理模塊(詞性標示,情感剖析等),機器學習模塊(VSM, 聚類,SVM)以及可視化模塊等,可以說,Pattern的這一整套邏輯也是這篇文章的組織邏輯,不過這兒我們暫時把Pattern放到文本處理部分。我個人首要使用的是它的英文處理模塊Pattern.en, 有許多很不錯的文本處理功用,包含基礎的tokenize, 詞性標示,語句切分,語法檢查,拼寫糾錯,情感剖析,句法剖析等,相當不錯。
3、 TextBlob: Simplified Text Processing
TextBlob是一個很有意思的Python文本處理東西包,它其實是根據上面兩個Python東西包NLKT和Pattern做了封裝(TextBlob stands on the giant shoulders of NLTK and pattern, and plays nicely with both),一起供給了許多文本處理功用的介面,包含詞性標示,名詞短語提取,情感剖析,文本分類,拼寫檢查等,甚至包含翻譯和語言檢測,不過這個是根據Google的API的,有調用次數約束。
4、 MBSP for Python
MBSP與Pattern同源,同出自比利時安特衛普大學CLiPS實驗室,供給了Word Tokenization, 語句切分,詞性標示,Chunking, Lemmatization,句法剖析等根本的文本處理功用,感興趣的同學可以重視。
關於 Python文本處理工具都有哪些,環球青藤小編就和大家分享到這里了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。如果您還想繼續了解關於python編程的學習方法及素材等內容,可以點擊本站其他文章學習。