python如何从txt文件中解析出有效的数据
1、 问题描述
笔者所使用的的txt文件较为复杂,但是几乎所有的类似问题都可从中推演出来。笔者的txt文件有效信息格式如下
====Start data collection label1====
xxxxxxx #表示未知的中英文字符串
xxx acc 0.1 0.2 0.3 xxx
xxx gyro 0.4 0.5 0.6
==== End data clooection xxx====
xxxxxxx
====Start data collection label2====
xxxxxxx #表示未知的中英文字符串
xxx acc 0.11 0.21 0.31 xxx
xxx gyro 0.41 0.51 0.61
==== End data clooection xxx====
xxxxxxx
假设label1对应的标签是1,我们期望得到的csv文件是:
0.1 0.2 0.3 0.4 0.5 0.6 1
0.11 0.21 0.31 0.41 0.51 0.61 2
2、所需第三方库
import os
import numpy as np
import traceback #用于防止错误的溢出
3、任务分解
3.1 将所有的txt文件放到一个文件夹中,进行批量读取
path='./dataset'
files=os.listdir(path) #得到文件夹目录
for file in files: #遍历目录中的文件if os.path.splitext(file)[-1]='.txt'file=path+'\\'+file #得到完整的文件路径名try:tocsv_file(flie) #tocsv_file为用于处理txt的主要程序except Exception as e:print(traceback.format_exc())
3.2将类别进行分类统计标签
首先定义一个字典,用于统计标签
dicts={'label1':'1',
'label2':'2',
'label3':'3',
'label4':'4',
}
3.3用一个列表保存txt文件的每一行
datas=[]
with open(file,"r",encoding='unicode-escape') as f: #编码格式可根据需要修改for line in f.readlines():line=line.strip('\n') #去掉每一行的换行符datas.append(line) #将每一行的字符串都添加到datas列表中
3.4 统计每个label出现的次数
注意,这里还需要一个二维列表,用于分别保存start data collection
和end data collection
之间的数据,命名为traindata
i=-1 #表示traindata的索引,初始化为-1
traindata=[[] for _ in range(100)]
flag=False #表示进入 start data collection的标志
labels=[] #初步提取的所有标签集合
for data in datas:if 'Start data collection' in data:flag=Truei=i+1label=data.split(' ')[4] #通过相应的规则分解得到标签labels.append(dicts[label])#将标签通过字典转换成整数if flag==True:traindata[i].append(data)if 'End data collection' in data:falg=False
labels=np.array(labels) #将标签有字符转换为浮点数
3.5 开始有效数据提取
在提取数据之前,我们先定义一个函数,count_list
,用于判断一个二维列表的非空元素的长度
def count_list(nums): # 此函数的作用是判断一个二维列表的非空元素的长度count = 0for i in range(len(nums)):if nums[i] != []:count += 1return count
# 先定义两个二维列表,用于储存acc和gyro数据
res1 = [[] for _ in range(count_list(traindata))]
res2 = [[] for _ in range(count_list(traindata))]
#再定义一个二维列表,将前两个列表合并到一起
res3 = [[] for _ in range(count_list(traindata))]
for j in range(count_list(traindata)):strdatas = traindata[j]for strdata in strdatas:if 'acc' in strdata:valid_data=strdata.split(' ')[3]+' '+strdata.split(' ')[4]+' 'strdata.split(' ')[5]res1[j].append(valid_data)if 'gyro' in strdata:valid_data=strdata.split(' ')[3]+' '+strdata.split(' ')[4]+' 'strdata.split(' ')[5]res2[j].append(valid_data)
#这里使用2重for循环。len(res2)=len(res1)
#担心会出现说偶尔某一次只有acc,没有gyro的数据,因此,做最小值判断,防止报错
for ii in range(len(res2)):for jj in range(min(len(res1[ii]), len(res2[ii]))):res3[ii].append(res2[ii][jj] + ',' + res1[ii][jj] + ',' + labels[ii])
3.5 有效数据保存
savepath=''
subject=''
for iii in range(len(res3))res4=[]listdatas=res3[iii]for listdata in listdatas:temp=listdata.split(' ')res4.append(tmep)res5=np.array(res4)res5=res5.astype(float)np.savetxt('{}{}{}'.format(),res5,delimiter=' ',fmt=)
4.整体代码
python如何从txt文件中解析出有效的数据相关推荐
- python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例
本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...
- 根据条件从txt文件中挑出一些文字并据此修改文件名字
根据条件从txt文件中挑出一些文字并据此修改文件名字 /* ****************************************************** *学习Windows API编 ...
- 使用python批量修改txt文件中的信息
使用python批量修改txt文件 在更改深度学习很多标签文件的时候,我们有时候需要自己修改txt文件里的路径,这时候如果写一个python程序,就会比较容易: import os import ra ...
- 【python】取txt文件中的单词存到SQLite数据库,并且从bing词典爬取单词详情
自己做一个单词词典,打算从bing词典爬单词. 单词怎么来? 取一些英文文本的txt文件,写一个py文件取txt中的单词存到SQLite数据库中. py文件的功能是: 选择出txt文本中的所有单词,正 ...
- MATLAB中批量从txt文件中读取指定行的数据保存为txt文件
经常遇到,我们想要读取的数据,不是从头开始读取的,我们往往要求从固定的行开始读取,MATLAB代码如下: function readData() %从指定行开始读取数据 readFilePath='C ...
- 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...
本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...
- python从txt拿取数据_python requests + xpath 获取分页详情页数据存入到txt文件中
直接代码,如有不懂请加群讨论 # *-* coding:utf-8 *-* # import json import requests import pytesseract import time i ...
- python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...
相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...
- python将字符串写入txt文件_python将字符串以utf-8格式保存在txt文件中的方法
python将字符串以utf-8格式保存在txt文件中的方法 如下所示: #ltp_data 字符串 写进777.txt 1. def save(filename, contents): fh = o ...
最新文章
- HBase应用快速学习
- 「OS」Centos7安装Nvidia驱动
- JSONObject中optString和getString等的区别
- 腾讯Node.js基础设施TSW正式开源
- 引用和指针的区别都有什么_C++指针与引用的区别
- linux 中文编码环境,linux中文编码问题总结
- table-layout:fixed; 表格比例固定
- hive与mysql的数据分区的异同
- Introduction to Computer Networking学习笔记(五):ARP协议(Address Resolution Protocol)
- 解决LDAP客户端统一认证DirectoryEntry出现 Ox80005000的问题
- 基于MATLAB的说话人语音识别声纹识别系统
- Entity Framework入门
- 手机显示器云服务器,不想买台式机,手机加显示器组成云电脑是否可行?
- win10 命令行进入指定目录方法
- 杀人游戏-Tarjan
- 移动硬盘可以识别但无法读取的处理方法
- IOS ReplayKit RPScreenRecorder 的屏幕录制功能
- 部署LAMP动静分离以及部署Discuz论坛
- python中基础知识(五)
- Oracle 行列转换函数pivot使用