標籤:python
源 | 小象 文 | 賈庸
本文將帶領小夥伴們一起,使用Python進行文本處理,先來看下要處理的文本, 檔案名稱為“data.txt”, 檔案裡面的內容是三行中英對照的文本,和兩個空行,
我們要實現的功能就是從這三行文本中分別抽取出中文及其對應的英文,這個功能再加上爬蟲,就可以製作自己專屬的英語詞典了,是不是很酷, 又很實
用,還等什麼,趕緊上代碼
本文要照顧到零基礎的童鞋,所以要從最簡單的building block 開始,先運行代碼看效果
貌似僅僅是列印出了文本中的內容,您說對啦,就是這麼簡單,我們追求的效果就是萬事開頭簡單,中間簡單,結尾簡單:)
雖然只有兩行代碼,但是對於真正零基礎的童鞋,恐怕只能明白print的意思了:)
所以要逐字解釋下, 首先是 open(“data.txt”),這是在告訴python,開啟名為“data.txt”的 檔案;開啟後幹什麼呢?通過 for 逐行讀取檔案裡面的內容,有的童鞋可能第 一次接觸這種文法,感覺不理解,這個沒關係,其實不是不理解, 而是新知識需要適應,多敲幾遍代碼就,每天敲一遍,不出一個星期,就會
覺得異常親切了,不信可以試下,每天花3分鐘的時間, 一個星期一共21分鐘,真的有效哦。
然後就是print了,line表示的是每次讀取得到的那一行內容,包括空行也算哦,print(line),就是把讀取到的內容列印出來。
前面的3個知識點掌握後,童鞋們就已經是入門啦!然後就是V2,還是先看效果
有的童鞋會不禁大喊:亂碼了!親,莫慌張,這些方括弧不是亂碼,是文法。在Python中, 一對方括弧[]表示的是一個list,對,list是論個賣的,哦,不是賣,是使用:)
一個list可以是空的, 比如中就有兩個是空list,也可以是包含多個元素, 比如中的另外3個list,每個list中包含了3個元素,在這個案例中每個元素是一個string, 用一對單引號表示string的開始和結束,有童鞋會問雙引號可以嗎,這個可以有:)
在同一個list中,元素與元素之間以逗號間隔。
輸出的結果我們已經搞懂了,下一步就要看源碼了
V2版中增加了一行,new_line,是對line進 行了兩個操作(也可以理解為對line進 行了兩道加 工)後得到的,也就是我們前面看到的包含了元素的list。
那麼對line進行了什麼操作呢?
為了說明對line進行的加 工,我們要定義一組變數,分別是空string(變數名為emptyString), 一個字元(strA),一個字元尾碼一個空格(strAWithTrailingWhitespace),對這個尾碼空格的string進 行rstrip()操作後得到的string(strArstriped)。是不是有點像繞口令,請不要跳過,如果臨時跳過了,請再回來仔細讀一遍哈,其實y就是為了體驗rstrip()的功能:)
我們一個一個來看下, 首先是空string
所謂空string,就是這個string不包含任何字元,所以 長度(也就是len(emptyString))為0,print這個空string當然什麼都看不到,為了讓 大家能看到效果,在print的時候 又加上了一個“.”
然後是包含一個字元的string(變數名為strA),所以長度(也就是len(strA))為1,然後是print這個string再加 一個“.”
有了前面的鋪墊,敲黑板的知識要來了!下 面我們要定義的這個變數是一個字元尾碼(Trailing)一個空格
(Whitespace)變數名充分體現了這 一點:),所以長度為2,請注意print時,“a”與“.”之間有明顯的 一個空格, 而且是可以用滑鼠選中的哦
本小節最後一個變數名是strArstriped,即,對strAWithTrailingWhitespace變數進 行去尾碼空格的操作得到的新變數,所以長度 又變回了1,請注意print時,“a”與“.”之間的那個空格被rstrip掉了
為了方便童鞋們理解, 用兩個list分別儲存未經過rstrip的原始文本,和處理後的文本,對照效果如所示
然後是split() 方法,作用就是split,將一行文本分成幾個小段,預設的分隔字元(delimiter)是空格(whitespace),並且會將空串從結果中刪掉。效果如下
最後是最終版,listE儲存英語,listC儲存對應的中文
-END-
著作權聲明:本文為小象原創文章,轉載請聯絡後台。
零基礎學習Python文本處理