python拆分CANLog

通过CANOE 导出的log通常有很多个ID的数据,如何才能找到某一个ID下的特殊的信号?利用python可以简单的进行这个步骤,代码如下:

说明:

  最终的效果是将log信息,分不同的ID进行拆分,并单独生成文件log_id.csv的文件夹。

  1. 需要输入输入文件夹

  2. 生成_out文件夹。

  3. 没有错误处理

  4. 采用"[A-F|\d]{3}"匹配CAN ID

 1 #log analy about CAN Signal for CANOE
 2 import os
 3 import re
 4
 5 ID_Info = {}
 6 fold_in = input("Please input Folder In:")
 7 fold_out = fold_in + "_out"
 8 os.mkdir(fold_out)
 9 rep_id = r"[A-F|\d]{3}"
10 patt_id = re.compile(rep_id)
11 def Info_Report():
12   ‘‘‘
13   CAN Log中的信息有固定的位数。
14     0:时间戳
15     1:1/2
16     2:ID
17     3:Rx/Tx
18     4: d
19     5: data Length
20     6: data length number info
21   ‘‘‘
22   pass
23
24 def Dev_Folder(folder_in):
25   for fi in os.listdir(folder_in):
26     #打开文件
27     with open(os.path.join(folder_in,fi),"r") as file:
28       #遍历文件行
29       for line in file:
30         #拆分文件,去掉空格,去掉前后逗号
31         a = re.sub(‘\s+‘,‘,‘,line).strip(",")
32         #判断List是否有3个以上的元素,并且第3个是否为ID.
33         if len(a.split(",")) > 2 and patt_id.match(a.split(",")[2]):
34           if a.split(",")[2] in ID_Info.keys():
35             #如果在字典中,直接将信息写入到该文件中
36             pass
37           else:
38           #新建一个文件,关联字典
39             ID_Info[a.split(",")[2]] = open((os.path.join(fold_out + "\\" + "Log_" + a.split(",")[2]) + ".csv"),"w")
40           ID_Info[a.split(",")[2]].write(a+"\n")
41           #print(a.split(",")[0])
42   for key in ID_Info:
43     ID_Info[key].close()
44
45 if __name__ == ‘__main__‘:
46   Dev_Folder(fold_in)
47       
时间: 2024-10-21 21:43:41

python拆分CANLog的相关文章

【制作表情包】Python拆分和合并GIF动态图(几行代码就搞定)

“表情包”是当前社交软件上不可或缺的交流方式,难以用文字表达的意思,发一个“表情包”,对方就能心领神会.下面是小派制作的一个表情包,准确地讲,是在已有表情包的基础上,二次加工而成的. 下面以最简单的代码形式(10行左右),介绍上述“表情包”的制作过程.第一,将GIF动态图拆分成图形帧.下图是网络上找到的一个GIF格式动态图. 利用Python将上述GIF格式动态图拆分图形帧,只需要输入以下代码.其中第1-2行是导入os库.从PIL库中导入Image函数功能.第3行是Image.open打开位于D

python拆分整型字符串并转为整型list

python正则表达式模块,拆分字符串, re.split()eg:s = '1, 2, 3, 4' 拆分组成数字list:strs = re.split(', ', s); print(strs); 结果:['1', '2', '3', '4'] 转成int行list:strs = list(map(int, strs)); print(strs); 结果:[1, 2, 3, 4] 如果strs中有多个分隔符, 模式串中间应用“|”分隔 各个分隔字符(或分隔字符串):eg:strs = '[1

python 拆分plist png

python 需要安装 PIL库 http://www.pythonware.com/products/pil/ 对应版本 #!python import os,sys from xml.etree import ElementTree from PIL import Image def endWith(s,*endstring): array = map(s.endswith,endstring) if True in array: return True else: return False

python 拆分字符串(3.0)

拆分字符串 1. def my_split(s, ds): l = [s] for d in ds: res = [] list(map(lambda x: res.extend(x.split(d)), l)) l = res return l s = 'abc;dwwewfe;rqger|gert;klg\tjotrg\tpa|s;dooo' ds = ';\t|' l = my_split(s, ds) print(l) output: ['abc', 'dwwewfe', 'rqger'

Python拆分大型CSV文件(亲测拆分178G)注释超全

程序 1 #!/usr/bin/env python3 2 # -*- coding:utf-8 -*- 4 # @FileName :Test.py 5 # @Software PyCharm 6 7 import os 8 import pandas as pd 9 10 # filename为文件路径,file_num为拆分后的文件行数 11 # 根据是否有表头执行不同程序,默认有表头的 12 def Data_split(filename,file_num,header=True): 1

使用python进行re拆分网页内容

这里简短的总结一下而不是完全的罗列python的re模块,python的re具有强大的功能,如下是一个从我们学校抓取数据然后拆分的程序,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import httplib import urllib import re import sys reload(sys) sys.setdefaultencoding("u

Python 之 sklearn 交叉验证 数据拆分

本文K折验证拟采用的是 Python 中 sklearn 包中的 StratifiedKFold 方法. 方法思想详见:http://scikit-learn.org/stable/modules/cross_validation.html StratifiedKFold is a variation of k-fold which returns stratified folds: each set contains approximately the same percentage of s

Pandas: 如何将一列中的文本拆分为多行? | Python

Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名为”Country” ,index为4和5的单元格内,值为”UK/Australia”和”UK/Netherland”. 今天,我们来介绍将含有多值的内容分拆成多行的几种方法. 加载数据 PS:可以通过左右滑动来查看代码 import pandas as pd df = pd.DataFrame({

把1到100的数字拆分成字典中的两个键值对 python

需求:把1到100的列表拆分成字典中两个键值对,k1和k2. #!/usr/bin/python num = {} all_list = [] for nu in range(1101): all_list.append(nu) for i in all_list: if i < 75: if 'k1' in num.keys(): num['k1'].append(i) else: num['k1'] = [i, ] else: if 'k2' in num.keys(): num['k2']