用Python按時(shí)間分割txt文件中的數(shù)據(jù)方法步驟
一、Python處理txt
- Python處理txt的好處
文本分析和挖掘:Python可以用于對(duì)文本數(shù)據(jù)進(jìn)行分析、挖掘和處理,從中提取有用的信息,例如情感分析、關(guān)鍵字提取、主題建模等。
自動(dòng)化文本處理:Python可以自動(dòng)化文本處理任務(wù),如批量處理文檔、搜索和替換文本、轉(zhuǎn)換文本格式等。這對(duì)于提高工作效率非常有幫助。
文本清洗:Python可以用于清洗文本數(shù)據(jù),去除不需要的字符、空格、標(biāo)點(diǎn)符號(hào)和特殊字符,以準(zhǔn)備數(shù)據(jù)用于進(jìn)一步分析。
文本預(yù)處理:在進(jìn)行自然語(yǔ)言處理(NLP)任務(wù)之前,通常需要對(duì)文本進(jìn)行預(yù)處理,例如分詞、停用詞移除、詞干提取等。Python提供了許多庫(kù)和工具來(lái)執(zhí)行這些任務(wù)。
自定義文本操作:Python允許你根據(jù)需要自定義文本操作。你可以編寫自己的文本處理函數(shù)或腳本,以滿足特定的需求。
文本生成:Python可以用于生成文本,例如自動(dòng)生成報(bào)告、文章、電子郵件等。你可以使用模板和變量來(lái)個(gè)性化生成的文本。
文本可視化:Python的各種數(shù)據(jù)可視化庫(kù)可以用于將文本數(shù)據(jù)可視化,例如制作詞云圖、文本熱圖、詞頻分布圖等。
文本搜索:Python可以用于文本搜索和匹配,幫助你查找特定的文本模式或關(guān)鍵字。
與外部數(shù)據(jù)源的集成:Python可以輕松與數(shù)據(jù)庫(kù)、API和其他數(shù)據(jù)源集成,以獲取、處理和存儲(chǔ)文本數(shù)據(jù)。
跨平臺(tái):Python是跨平臺(tái)的,可以在多個(gè)操作系統(tǒng)上運(yùn)行,因此你可以在不同環(huán)境中處理文本數(shù)據(jù)。
Python處理txt的基本方法步驟 :
1.打開文件:首先,你需要打開文本文件以便讀取或?qū)懭雰?nèi)容。你可以使用內(nèi)置的open()
函數(shù)來(lái)打開文件。
# 打開文件以讀取內(nèi)容 with open('example.txt', 'r') as file: content = file.read() # 打開文件以寫入內(nèi)容 with open('output.txt', 'w') as file: file.write('Hello, World!')
2.讀取文件內(nèi)容:如果你需要讀取文件的內(nèi)容,可以使用read()
方法來(lái)讀取整個(gè)文件的內(nèi)容,或者使用readline()
或readlines()
方法逐行讀取。
with open('example.txt', 'r') as file: content = file.read() # 讀取整個(gè)文件內(nèi)容 # 或者逐行讀取 lines = file.readlines() for line in lines: print(line)
3.寫入文件內(nèi)容:如果你需要向文件中寫入內(nèi)容,可以使用write()
方法將文本寫入文件。
with open('output.txt', 'w') as file: file.write('Hello, World!')
4.關(guān)閉文件:一定要在完成文件操作后關(guān)閉文件,以釋放資源并確保文件的正確保存。
file.close()
5.文本處理:一旦你讀取了文本,你可以使用Python的字符串操作來(lái)處理文本數(shù)據(jù)。這包括分詞、文本清洗、正則表達(dá)式匹配、字符串替換等。
# 分割文本為單詞 words = content.split() # 清洗文本,去除標(biāo)點(diǎn)符號(hào)和特殊字符 import re cleaned_text = re.sub(r'[^\w\s]', '', content) # 使用正則表達(dá)式查找特定模式 pattern = r'\b\d{3}-\d{2}-\d{4}\b' # 查找美國(guó)社會(huì)安全號(hào)碼 matches = re.findall(pattern, content) # 字符串替換 replaced_text = content.replace('old_word', 'new_word')
6.寫入處理后的文本:一旦你完成了文本處理,你可以將處理后的文本寫回文件。
with open('output.txt', 'w') as file: file.write(processed_text)
這些是處理文本文件的基本方法。你可以根據(jù)具體的需求來(lái)組合和定制這些方法,以滿足你的文本處理任務(wù)。在處理大量文本數(shù)據(jù)時(shí),通常需要考慮內(nèi)存管理和性能優(yōu)化,但上述步驟是基礎(chǔ)的文本文件處理方法。
二、用Python按時(shí)間分割txt文件中的數(shù)據(jù)
技術(shù)工具:
Python版本:3.9
代碼編輯器:jupyter notebook
有一個(gè)監(jiān)測(cè)系統(tǒng),每隔兩分鐘就會(huì)記錄一下監(jiān)測(cè)結(jié)果,如下圖所示:
現(xiàn)在要求按小時(shí)將數(shù)據(jù)提取,并存為新的txt文件,也就是1天會(huì)對(duì)應(yīng)有24個(gè)txt文件。先整理一下思路:
1. 讀取數(shù)據(jù)
2. 將每行數(shù)據(jù)的時(shí)間戳轉(zhuǎn)換成“日期-小時(shí)”格式,并按此分類數(shù)據(jù),存入字典
3. 按“日期-小時(shí)”分?jǐn)?,將寫入?shù)據(jù)到新的txt文件
使用`readlines()`將txt中的每一行數(shù)據(jù)讀取為一個(gè)長(zhǎng)字符串,并存入列表。數(shù)據(jù)讀取如下所示。
#讀取txt文件中的數(shù)據(jù) file = open('data.txt') lines = file.readlines() lines[:5]
然后定義一個(gè)將時(shí)間戳轉(zhuǎn)換成“日期 時(shí)間”格式的函數(shù),以便后續(xù)調(diào)用。先導(dǎo)入`time, datetime`模塊。`time.localtime`用于將時(shí)間戳格式化為本地時(shí)間,這樣就獲得一個(gè)時(shí)間序列(比如如下打印結(jié)果)。然后用`time.strftime`從時(shí)間序列中提取出我們?cè)O(shè)定的格式。此處設(shè)定的格式為`%Y-%m-%d %H`,對(duì)應(yīng)年,月,日和小時(shí)。嘗試調(diào)用了一下函數(shù)`timeStampToDate(1480581236)`,結(jié)果`'2016-12-01 16'`符合我們的要求。
import time, datetime def timeStampToDate(timeStamp): timeArray = time.localtime(timeStamp) return time.strftime("%Y-%m-%d %H", timeArray) print("轉(zhuǎn)換后的時(shí)間序列如下:\n") timeStamp = 1480581236 timeArray = time.localtime(timeStamp) timeArray = print(timeArray) timeStampToDate(1480581236)
然后按“日期 小時(shí)”格式提取數(shù)據(jù),并存入字典`data`。比如將時(shí)間是這個(gè)`2016-12-01 16`的所有數(shù)據(jù)都集中存放。此處,我們按`2016-12-01 16`為字典的鍵,這個(gè)時(shí)間對(duì)應(yīng)的所有行都作為列表存為它的值。由于從txt文件中讀取的數(shù)據(jù)是一行對(duì)應(yīng)一個(gè)字符串,所以需要先分割。在txt文件中,各字段是按空格分隔的,所以此處也以空格分割,即`split(" ")`。然后調(diào)用時(shí)間戳轉(zhuǎn)換函數(shù)`timeStampToDate()`將列表`row_data`中的第三個(gè)數(shù)據(jù)(時(shí)間戳)轉(zhuǎn)換成設(shè)定的日期-時(shí)間格式。隨后將獲取到的“日期-時(shí)間”設(shè)定為字典中的鍵的默認(rèn)值,其值為一個(gè)空列表。這樣才能保證后續(xù)獲取到的相同“日期-時(shí)間”的數(shù)據(jù)都集中到它的麾下。數(shù)據(jù)獲取完后用`data`查看一下數(shù)據(jù),顯示正常。
#按日期-小時(shí)提取數(shù)據(jù),并存入字典 data = {} for line in lines: row_data =line.split(" ") #將一行數(shù)據(jù)按空格分隔 date_hour = timeStampToDate(int(row_data[2])) #將第三個(gè)數(shù)據(jù)(時(shí)間戳)轉(zhuǎn)換成設(shè)定的日期-時(shí)間格式 data.setdefault(date_hour,[]) #以日期-時(shí)間為鍵,相同日期-時(shí)間的數(shù)據(jù)存為它的值 data[date_hour].append(row_data) #數(shù)據(jù)存入data字典 data
然后就準(zhǔn)備寫入數(shù)據(jù)了。由于需要寫入N次,還是建立一個(gè)函數(shù),重復(fù)調(diào)用比較方便。需要給函數(shù)傳入兩個(gè)參數(shù),一個(gè)是文件名,另一個(gè)是包含數(shù)據(jù)的列表。文件名直接使用字典`data`的鍵,也就是要求的“日期 時(shí)間”,比如`2016-12-01 16`。`+ '.txt'`用于手動(dòng)加上后綴。`a`表示添加模式,不會(huì)影響已寫入的數(shù)據(jù)。由于傳入的列表是個(gè)雙層嵌套列表,所以需要遍歷兩次,才能提取到最終的數(shù)據(jù)。提取到數(shù)據(jù)后,為避免各個(gè)數(shù)據(jù)挨在一起,需要在每個(gè)數(shù)據(jù)之間插入空格。但每行最后一個(gè)數(shù)據(jù)不用插入了,因?yàn)樽詈笠粋€(gè)數(shù)據(jù)帶了換行符`\n`,加上空格,就會(huì)導(dǎo)致下一行的數(shù)據(jù)前面都有一個(gè)空格。因此如下程序用`if`語(yǔ)句做了限制,只有當(dāng)元素不是最后一個(gè)元素,才在后面插入空格。
#寫入數(shù)據(jù)函數(shù) def To_txt(filename, data):#filename為寫入文件的路徑,data為要寫入數(shù)據(jù)列表. file = open(filename + '.txt','a') for i in range(len(data)): for j in range(len(data[i])): text = data[i][j] if j != len(data[i])-1: #判斷是否最后一個(gè)元素 text = text+' ' #若不是最后一個(gè)元素才加空格 file.write(text) file.close()
寫入函數(shù)寫好后,就可以批量寫入數(shù)據(jù)了。遍歷字典`data`的所有鍵,調(diào)用寫入函數(shù)寫入即可。結(jié)果如下。
以上就是用Python按時(shí)間分割txt文件中的數(shù)據(jù)方法步驟的詳細(xì)內(nèi)容,更多關(guān)于Python分割txt文件中數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python爬蟲基礎(chǔ)知識(shí)點(diǎn)整理
在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲基礎(chǔ)知識(shí)點(diǎn)整理內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-06-06Python通過(guò)for循環(huán)理解迭代器和生成器實(shí)例詳解
這篇文章主要介紹了Python通過(guò)for循環(huán)理解迭代器和生成器,結(jié)合實(shí)例形式詳細(xì)分析了迭代器和生成器的概念、原理、使用方法及相關(guān)操作技巧,需要的朋友可以參考下2019-02-02Pycharm學(xué)習(xí)教程(7)虛擬機(jī)VM的配置教程
這篇文章主要為大家詳細(xì)介紹了最全的Pycharm學(xué)習(xí)教程第七篇,Python快捷鍵相關(guān)設(shè)置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05對(duì)Python3 * 和 ** 運(yùn)算符詳解
今天小編就為大家分享一篇對(duì)Python3 * 和 ** 運(yùn)算符詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02為python爬蟲docker鏡像添加nodejs環(huán)境實(shí)現(xiàn)方法
這篇文章主要為大家介紹了為python爬蟲docker鏡像添加nodejs環(huán)境實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Python3 MySQL 數(shù)據(jù)庫(kù)連接的使用示例
本文我們?yōu)榇蠹医榻B Python3 使用 PyMySQL 連接數(shù)據(jù)庫(kù),并實(shí)現(xiàn)簡(jiǎn)單的增刪改查,需要的朋友可以參考下2021-06-06