首先先要读取数据,然后通过正则表达式进行筛选,最后把筛选的结果进行输出
因为我拿到的是can的数据,是txt文档可以读取。并不是正常的CSV文档。
文件截图
数据格式
数据格式比较杂乱无章
import pandas as pd
import numpy as np
import re
if __name__ == '__main__':
file = open("/Users/qiao/Desktop/asc_to_csv/Logging_2.asc",mode='r')
data = file.readlines()
#file.close()
findword = u"(.+33D.+)"
lastlist = []
for line in data:
#result = re.match('[2][6][0]',line)
pattern = re.compile(findword)
results = pattern.findall(line)
str = ''.join(results)
f1 = open("text2.txt","a+",encoding='utf-8')
f1.write(str)
print(str)
#for result in results:
# lastlist.append(result)
#list = set(lastlist)
#print(list)
# for l in list:
#print(l)
# f1 = open("text1.txt","a+",encoding='utf-8')
# f1.write(l)
#print(result)
f1.close()
通过正常的读取文件的操作,可以拿到文件信息。
如果想筛选信号的话,需要按照筛选条件,所有需要进行每行读取readlines
这样就把数据每行的数据按照list的格式存在data里了
通过添加筛选条件
findword = u"(.+33D.+)"
就是有33D的这一整行都会被选出来。
接下来就是创建一个文件,并存入文件了,但是我们开始的时候是list格式的数据,他是不能存入数据的,所有需要把list格式换成string格式
str = ''.join(results)
然后就是存入文件并关闭文件了
这样就结束了。