1. 程式人生 > >一文教你學會python讀取文字及字串常用操作

一文教你學會python讀取文字及字串常用操作

python 讀取txt檔案

開啟支付寶首頁搜尋‘543701491’,領取馬雲的支付寶紅包

Python的文字處理是經常碰到的一個問題,Python的txt檔案讀取中,有三類方法:read()、readline()、readlines(),這三種方法各有利弊,下面逐一介紹其使用方法和利弊。

read():

  • read()是最簡單的一種方法,一次性讀取檔案的所有內容放在一個大字串中,即存在記憶體中
    file_object = open('test.txt') //不要把open放在try中,以防止開啟失敗,那麼就不用關閉了
    try:
        file_context = file_object.read() //file_context是一個string,讀取完後,就失去了對test.txt的檔案引用
        #  file_context = open(file).read().splitlines() 
        // file_context是一個list,每行文字內容是list中的一個元素
    finally:
        file_object.close()
    //除了以上方法,也可用with、contextlib都可以開啟檔案,且自動關閉檔案,
    //以防止開啟的檔案物件未關閉而佔用記憶體
  • read()的利端
    • 方便、簡單
    • 一次性獨讀出檔案放在一個大字串中,速度最快
  • read()的弊端
    • 檔案過大的時候,佔用記憶體會過大

readline():

  • readline()逐行讀取文字,結果是一個list
    with open(file) as f:
        line = f.readline()
        while line:
            print line
            line = f.readline()
  • readline()的利端
    • 佔用記憶體小,逐行讀取
  • readline()的弊端
    • 由於是逐行讀取,速度比較慢

readlines():

  • **readlines()一次性讀取文字的所有內容,結果是一個list
    with open(file) as f:
      for line in f.readlines():
         print line
    • 這種方法讀取的文字內容,每行文字末尾都會帶一個'\n'換行符 (可以使用L.rstrip('\n')去掉換行符)
  • readlines()的利端
    • 一次性讀取文字內容,速度比較快
  • readlines()的弊端
    • 隨著文字的增大,佔用記憶體會越來越多

最簡單、最快速的逐行處理文字的方法:直接for迴圈檔案物件

file_object = open('test.txt','rU')
try: 
    for line in file_object:
         do_somthing_with(line)//line帶"\n"
finally:
     file_object.close()

如果對於讀取到的一行內容要進行分割,也很容易,可以使用split進行分割

s='hello! my word'
print s.split()
#輸出結果為['hello!', 'my', 'word']

如果是格式化的定長的字元,也可以使用下標進行讀取,比如s=‘helloworld’,s[5:]讀到的就是'world'