1. 程式人生 > 其它 >python提取txt檔案每一行中的特定字元內容,並寫入檔案

python提取txt檔案每一行中的特定字元內容,並寫入檔案

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+ : 可讀、可寫,檔案不存在先建立,不會覆蓋,追加在末尾