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 collectionend 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文件中解析出有效的数据相关推荐

  1. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  2. 根据条件从txt文件中挑出一些文字并据此修改文件名字

    根据条件从txt文件中挑出一些文字并据此修改文件名字 /* ****************************************************** *学习Windows API编 ...

  3. 使用python批量修改txt文件中的信息

    使用python批量修改txt文件 在更改深度学习很多标签文件的时候,我们有时候需要自己修改txt文件里的路径,这时候如果写一个python程序,就会比较容易: import os import ra ...

  4. 【python】取txt文件中的单词存到SQLite数据库,并且从bing词典爬取单词详情

    自己做一个单词词典,打算从bing词典爬单词. 单词怎么来? 取一些英文文本的txt文件,写一个py文件取txt中的单词存到SQLite数据库中. py文件的功能是: 选择出txt文本中的所有单词,正 ...

  5. MATLAB中批量从txt文件中读取指定行的数据保存为txt文件

    经常遇到,我们想要读取的数据,不是从头开始读取的,我们往往要求从固定的行开始读取,MATLAB代码如下: function readData() %从指定行开始读取数据 readFilePath='C ...

  6. 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  7. python从txt拿取数据_python requests + xpath 获取分页详情页数据存入到txt文件中

    直接代码,如有不懂请加群讨论 # *-* coding:utf-8 *-* # import json import requests import pytesseract import time i ...

  8. python图片保存为txt文件_python + opencv实现提取png图像的像素信息并存储到txt文件中(附安装指导)...

    相关库安装指导: 这里我们需要 opencv_python,numpy,matplotlib库,另外我用的是python3.6.1版本. 一般库大家都是用pip install命令安装的,不过不知道为 ...

  9. python将字符串写入txt文件_python将字符串以utf-8格式保存在txt文件中的方法

    python将字符串以utf-8格式保存在txt文件中的方法 如下所示: #ltp_data 字符串 写进777.txt 1. def save(filename, contents): fh = o ...

最新文章

  1. HBase应用快速学习
  2. 「OS」Centos7安装Nvidia驱动
  3. JSONObject中optString和getString等的区别
  4. 腾讯Node.js基础设施TSW正式开源
  5. 引用和指针的区别都有什么_C++指针与引用的区别
  6. linux 中文编码环境,linux中文编码问题总结
  7. table-layout:fixed; 表格比例固定
  8. hive与mysql的数据分区的异同
  9. Introduction to Computer Networking学习笔记(五):ARP协议(Address Resolution Protocol)
  10. 解决LDAP客户端统一认证DirectoryEntry出现 Ox80005000的问题
  11. 基于MATLAB的说话人语音识别声纹识别系统
  12. Entity Framework入门
  13. 手机显示器云服务器,不想买台式机,手机加显示器组成云电脑是否可行?
  14. win10 命令行进入指定目录方法
  15. 杀人游戏-Tarjan
  16. 移动硬盘可以识别但无法读取的处理方法
  17. IOS ReplayKit RPScreenRecorder 的屏幕录制功能
  18. 部署LAMP动静分离以及部署Discuz论坛
  19. python中基础知识(五)
  20. Oracle 行列转换函数pivot使用

热门文章

  1. 算法学习(动态规划)- 数塔问题
  2. 2018年终总结——凡是过往,皆为序章
  3. [学习笔记] 《精准营销:社会化媒体时代企业传播实战指南》
  4. 邮件群发为什么容易被拦截?怎么避免?
  5. Windows系统封装(三)安装软件和系统优化清理。
  6. 图片转文字微信小程序使用方法
  7. LayUI可选择可输入下拉框
  8. 浅谈verilog hdl中parameter的用法
  9. 前端皮肤功能实现(基于Less)
  10. python中如何判断一个字符串是否可以转换为数字