Python腳本:從txt文檔中提取數字並用圖表顯示

從最細節開始,到最後結果,都是自己動手驗證,可以供大家參考(包括模塊numpy matplotlib導入失敗的解決方法)

1安裝環境

去Python官網下載,我的電腦64位所以選擇最新的版本Python3.8.2,因爲我用2.7版本有問題,然後選擇executable installer,下載後安裝一路往下問題不大。

然後在電腦搜索 idle,打開編輯界面,在file中編譯後,run->run module,或者快捷鍵F5運行結果。

先展示下結果,目的想把datalog.txt中的AttrData:後面的兩個十六進制的數字提取出來,高八位在後,低八位在前,用圖表展示出來比較形象

2代碼實現

import re                                         #導入模塊
import numpy as np                        #導入numpy模塊
import matplotlib.pyplot as plt         #導入matplotlib模塊
filename='pir.txt'                              #txt文件名
keystr=r"AttrData:"                        #關鍵字是AttrData: ,因爲目的是把它後面的數字提取出來
count=0
tmpy=0
y=[]
pos=[]
with open(filename,'r') as f:             #打開文件用open,類似C語言,得到一個文件指針f
    for lines in f.readlines():     #readlines是讀取文件的所有行,用for語句就是循環讀,lines就代表當前這一行的內容
        tmp=[str(i) for i in lines.split(',',-1)]            #lines.split即把lines的內容通過逗號分開,分別儲存在tmp中
        for a in tmp:                                                 #然後再把tmp中的每一個字符串拿出來檢查
            m=re.search(keystr,a)                       #re.search()是關鍵字搜索功能(即我們上面的關鍵字),如果沒搜索到就返回None
            if m!=None:                                             #所以如果m不等於None,就說明這個字符串有我需要信息
                n=[str(i) for i in a.split(':',-1)]           #然後通過冒號把這個字符串再拆解,冒號後面就是數字
                nn=[str(i) for i in n[1].split(' ',-1)]#      #然後再把後面的字符串通過空格再拆解,得到兩個數字,和一個換行符
                nn.remove('\n')                                   #刪掉換行符
                count=count+1                                  #記錄有效數據個數,然後下面通過int()函數把它轉爲數字類型
                if len(nn)==1:
                     tmpy=(int(nn[0],16))                   
                else :
                    tmpy=(int(nn[0],16))+(int(nn[1],16))*256
                y.append(tmpy)                                     #保存到y數組中,append是添加一個元素的意思
    print(y)                                                                 #然後把所有y打印出來,就是上面效果展示的左邊
    print(count)

    x= np.linspace(0, count-1, len(y))                           #然後給x賦值,從0到count,x每次遞增1
    plt.plot(x, y, label='linear')                                   #把提取出來的作爲y值,x軸遞增1來展示y值的變化
    plt.show()                                                       #展示圖像,右邊所示
 

藍色爲註釋,可能會出現的問題,是導入模塊出錯,所以選擇清華的資源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  numpy matplotlib

進入cmd,在Python安裝目錄裏面的script目錄下輸入上面指令:

另外主要是模塊的使用,函數的使用,推薦腳本之家或者菜鳥教程搜索對應的函數,比如搜索split函數會顯示使用方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章