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函数会显示使用方法。

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