python提取txt檔案每一行中的特定字元內容,並寫入檔案
阿新 • • 發佈:2022-05-15
import re #這裡以讀取video_reqtest.txt中後一個括號內的數字0.079,存到train.txt為例,video_reqtest.txt檔案中的內容如下 #video 1/1 (1/902) /content/drive/MyDrive/yolov5-5.0/mydata/barbecue.mp4: 384x640 1 fire, Done. (0.079s) #video 1/1 (2/902) /content/drive/MyDrive/yolov5-5.0/mydata/barbecue.mp4: 384x640 1 fire, Done. (0.015s) #video 1/1 (3/902) /content/drive/MyDrive/yolov5-5.0/mydata/barbecue.mp4: 384x640 1 fire, Done. (0.015s)# 讀取檔案的每一行 read_txt = open("video_reqtest.txt", "r",encoding="utf-8") #定義一個空列表用於接收提取出來的內容 temp = [] for line in read_txt: a = re.findall(r'[(](.*?)[)]', line) #讀出一行中()內的值,用到是python的正則表示式,不懂。。。如 abbc(0.1s) ,讀出為 0.1s ''' print(a) 輸出結果: ['1/902', '0.079s'] ['2/902', '0.015s'] ['3/902', '0.015s'] 要提取的內容在列表的第二個索引中,再去掉a[1]中的s''' b = re.findall(r'(.*?)[s]', a[1]) #按上面的方法把s去掉 ''' print(b) 輸出結果: ['0.079'] ['0.015'] ['0.015'] 要提取的內容在列表的第一個索引中,注意不是列表b呦。。。 ''' temp.append((b[0])) #新增到臨時列表中 ''' print(temp) 輸出內容: ['0.079'] ['0.079', '0.015'] ['0.079', '0.015', '0.015'] 迴圈一次新增一個,最後得到我們要的列表。。。。 對一個python小白來說搞到這裡好艱難,參考網友的內容,一點點的搞出來了。。。。。 還有最後一步,儲存到檔案。。。''' #寫入到檔案 with open("train.txt","w",encoding='utf-8') as file: for i in temp: file.write(i+'\n') file.close() '''trian檔案內容''' #0.079 #0.015 #0.015 #於2022-05-15
ps:python中open讀寫模式的引數:
要了解檔案讀寫模式,需要了解幾種模式的區別,以及對應指標
r : 讀取檔案,若檔案不存在則會報錯
w: 寫入檔案,若檔案不存在則會先建立再寫入,會覆蓋原檔案
a : 寫入檔案,若檔案不存在則會先建立再寫入,但不會覆蓋原檔案,而是追加在檔案末尾
rb,wb: 分別於r,w類似,但是用於讀寫二進位制檔案
r+ : 可讀、可寫,檔案不存在也會報錯,寫操作時會覆蓋
w+ : 可讀,可寫,檔案不存在先建立,會覆蓋
a+ : 可讀、可寫,檔案不存在先建立,不會覆蓋,追加在末尾