IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python如何从txt文件中解析出有效的数据 -> 正文阅读

[Python知识库]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 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=True
		i=i+1
		label=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 = 0
    for i in range(len(nums)):
        if nums[i] != []:
            count += 1
    return 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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 18:07:23  更:2022-05-24 18:08:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 0:41:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码