問題描述:我有一個(gè)這樣的數(shù)據(jù)集叫test_result_test.txt,大概幾百上千行,兩行數(shù)據(jù)之間隔一個(gè)空行。
現(xiàn)在我希望能提取每一行X:和Y:后面的數(shù)字,然后保存進(jìn)Excel做進(jìn)一步的數(shù)據(jù)處理和分析 就拿第一行來說,我只需要0.969 和0.694。每一行三個(gè)數(shù)字的具體位置是不確定的,因此不能用固定的列數(shù)去處理,剛好發(fā)現(xiàn)split函數(shù)能對(duì)文本進(jìn)行切片,所以這里我們用這個(gè)函數(shù)來提取需要的數(shù)字信息。 split函數(shù)語法如下: 于是對(duì)于我們這里的文本,我們可以先用“:”切片,把文本分成三份,比如對(duì)于第一行
以“:”進(jìn)行切片得到
取第三個(gè)分片進(jìn)行“w”切片,得到
這里的第一分片就是我們要的X坐標(biāo) 最后我們分析一下思路: 首先定位文件位置讀取txt文件內(nèi)容,去掉空行保存Excel準(zhǔn)備工作,新建Excel表格,并編輯好標(biāo)題為寫入數(shù)據(jù)就位對(duì)于每一行數(shù)據(jù),首先用':'進(jìn)行切片,再用'w'切片得到想要的數(shù)字,然后寫入Excel保存
工具:安裝好python模塊的visual studio 2017 包:os,xlwt
操作:先import我們所需要的包 import os import xlwt 1.找到我們想要處理的文件,因此去到指定的位置,定位好文件 a = os.getcwd() #獲取當(dāng)前目錄 print (a) #打印當(dāng)前目錄 os.chdir('D:/') #定位到新的目錄,請(qǐng)根據(jù)你自己文件的位置做相應(yīng)的修改 a = os.getcwd() #獲取定位之后的目錄 print(a) #打印定位之后的目錄 2.打開我們的txt文件查看下里面的內(nèi)容(這一步可有可無) #讀取目標(biāo)txt文件里的內(nèi)容,并且打印出來顯示 with open('test_result1.txt','r') as raw: for line in raw: print (line) 3.去除空白行并保存 #去掉txt里面的空白行,并保存到新的文件中 with open('test_result1.txt','r',encoding = 'utf-8') as fr, open('output.txt','w',encoding= 'utf-8') as fd: for text in fr.readlines(): if text.split(): fd.write(text) print('success') 執(zhí)行完畢同個(gè)位置下多了一個(gè)txt文件
4. 創(chuàng)建一個(gè)Excel文件 #創(chuàng)建一個(gè)workbook對(duì)象,相當(dāng)于創(chuàng)建一個(gè)Excel文件 book = xlwt.Workbook(encoding='utf-8',style_compression=0) ''' Workbook類初始化時(shí)有encoding和style_compression參數(shù) encoding:設(shè)置字符編碼,一般要這樣設(shè)置:w = Workbook(encoding='utf-8'),就可以在excel中輸出中文了。默認(rèn)是ascii。 style_compression:表示是否壓縮,不常用。 ''' 5.創(chuàng)建一個(gè)sheet對(duì)象 # 創(chuàng)建一個(gè)sheet對(duì)象,一個(gè)sheet對(duì)象對(duì)應(yīng)Excel文件中的一張表格。 sheet = book.add_sheet('Output', cell_overwrite_ok=True) # 其中的Output是這張表的名字,cell_overwrite_ok,表示是否可以覆蓋單元格,其實(shí)是Worksheet實(shí)例化的一個(gè)參數(shù),默認(rèn)值是False 6.在表格里添加好基本的數(shù)據(jù)標(biāo)題,我這里是X和Y坐標(biāo) # 向表中添加數(shù)據(jù)標(biāo)題 sheet.write(0, 0, 'X') # 其中的'0-行, 0-列'指定表中的單元,'X'是向該單元寫入的內(nèi)容 sheet.write(0, 1, 'Y') 7.多次切割數(shù)據(jù)并定位好需要的部分保存進(jìn)Excel #對(duì)文本內(nèi)容進(jìn)行多次切片得到想要的部分 n=1 with open('output.txt','r+') as fd: for text in fd.readlines(): x=text.split(':')[2] y=text.split(':')[3] print (x.split('w')) print (y.split('w')) sheet.write(n,0,x.split('w')[0])#往表格里寫入X坐標(biāo) sheet.write(n,1,y.split('w')[0])#往表格里寫入Y坐標(biāo) n = n+1 # 最后,將以上操作保存到指定的Excel文件中 book.save('Output.xls') 現(xiàn)在定位到之前定義的文件位置,發(fā)現(xiàn)又多了一個(gè)Excel表格,打開Excel,想要的數(shù)據(jù)齊齊整整的排好躺在里面,舒服~
此時(shí)數(shù)據(jù)為文本格式,想要進(jìn)一步的處理請(qǐng)用Excel轉(zhuǎn)換成數(shù)字格式 源代碼:https://github.com/julis-wolala/TextdataHandler Reference:http://www./article/230273.html 總結(jié)到此這篇關(guān)于教你用python提取txt文件中的特定信息并寫入Excel的文章就介紹到這了,更多相關(guān)python提取txt文件寫入Excel內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家! 原文鏈接:https://blog.csdn.net/zhelijun/article/details/102294138 |
|