由于需要使用一個純單詞組成的文件,在網(wǎng)上下載到了一個存放單詞的文件,但是里面有中文的解釋,那就需要做一下提取了。
文本的形式如下:
所見即所得,這個文本是有規(guī)律的,每個單詞為一行,緊接著下一行便是單詞的解釋,有了這種規(guī)律我們就很好處理了。
首先我們來將文件的數(shù)據(jù)讀取出來:
#coding:utf-8file_object = open('words.txt')try: lines = file_object.readlines()finally: file_object.close( )for line in lines: print line代碼執(zhí)行的結(jié)果為:
顯然,這不是我們想要的結(jié)果,因?yàn)檫@里面有太多的空行了,現(xiàn)在最主要的就是要處理掉這些妨礙我們的空行,對于中文的亂碼呢,我們是不需要中文的解釋的,所以它是無妨礙的,如果想看得舒服些,那么我們就轉(zhuǎn)碼一下就好了。現(xiàn)在最主要的就是要知道為什么會出現(xiàn)這么多的空行,因?yàn)槲覀兊奈募且褜⒖催^了,顯然是這些空行的出現(xiàn)是有點(diǎn)“匪夷所思”的,這也是由于python讀文件的機(jī)制導(dǎo)致的,下面我們修改下代碼,來看看原因:
#coding:utf-8 file_object = open('words.txt')try: lines = file_object.readlines()finally: file_object.close( ) print lines在這里,我們直接輸出lines,得到如下的結(jié)果:
我們隨意拿出這句'runlet/n', 'n./xcd/xb0,/xd0/xa1/xba/xd3/n', '/n', 'runnel/n', 'n./xd0/xa1/xba/xd3,/xcf/xb8/xc1/xf7/n', '/n',從中可以看出,對于每行的文件,在讀取的時候,換行符“/n”也是會被讀取在單詞和對應(yīng)的解釋的后面的,所以這也就是為什么會有那么多空行的原因了,這顯然不是我們想要看見的,下面我們處理一下,讓這些多余的空行失去效果:
#coding:utf-8 file_object = open('words.txt')try: lines = file_object.readlines()finally: file_object.close( ) for line in lines: if line!='/n': print line.decode('gb2312','ignore'), #逗號得帶著,因?yàn)槲募陨韼Я藫Q行,可以代替pirnt的換行程序執(zhí)行后,得到如下的結(jié)果:
好了,這下就是我們想看到的東西了,那么,現(xiàn)在我們可以將這些輸出寫入 到新的文件里了,然后就可以得到我們想要的單詞文本了。
#coding:utf-8 file_object = open('words.txt')try: lines = file_object.readlines()finally: file_object.close( ) myfile=open('newfile.txt','w')num=0for word in lines: if word!='/n': num+=1 if num%2: #只有奇數(shù)行為單詞 myfile.write(word)運(yùn)行程序便可以得到新的單詞文件了,最終提取了45000多個單詞,文件如下所示:
很顯然,滿足我們最終想要實(shí)現(xiàn)的要求,那么可以收工了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選