python 小程序 —— 关键信息提取并生成csv文件
# This is a sample Python script.
import sys
import re
import os
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
def decodeXYZData( inData, searchS, indexDict, dateItem):
res = []
sig = 0
count = 0
for s in inData:
if searchS in s:
sig = 1
elif sig == 1:
if "-------- -------- -----" in s:
sig = 2
count = 0
elif sig == 2:
dict = {}
line_list = s.split() # 默认以空格为分隔符对字符串进行切片
if len(line_list) < 4 :
break
indexDict[int(line_list[1])] = count
count = count + 1
dict[dateItem[0]] = line_list[1]
dict[dateItem[7]] = line_list[3] # 读取出来的是字符
dict[dateItem[8]] = line_list[4]
dict[dateItem[9]] = line_list[5]
res.append(dict)
return res
def decodeData(inData, searchss, result, indexDict, dateItem):
sig = "";
id = 0;
for s in inData:
if searchss[0] in s:
line_list = s.split()
id = int(line_list[2])
sig = searchss[0];
elif searchss[1] in s:
line_list = s.split()
id = int(line_list[2])
sig = searchss[1];
elif sig == searchss[0]:
sig = "";
line_list = s.split()
idx = indexDict[id]
result[idx][dateItem[1]] = line_list[1]
result[idx][dateItem[2]] = line_list[2]
result[idx][dateItem[3]] = line_list[3]
elif sig == searchss[1]:
sig = "";
line_list = s.split()
idx = indexDict[id]
result[idx][dateItem[4]] = line_list[1]
result[idx][dateItem[5]] = line_list[2]
result[idx][dateItem[6]] = line_list[3]
return
def readFileToCsv(fw, rFile, filename):
search = ["FORCE* 10002", "MOMENT* 10003", "Load Point Information (Global Reference Frame)"]
dateItem = ["id", "Fx", "Fy", "Fz", "Tx", "Ty", "Tz", 'x', 'y', 'z']
fr = open(rFile, "r")
inData = fr.readlines()
fr.close()
indexDict = {}
result = decodeXYZData(inData, search[2], indexDict, dateItem)
decodeData(inData, search, result, indexDict, dateItem)
# id进行排序
indexSort = sorted(indexDict.items(), key=lambda x: x[0])
# 写入文档
for temIndex in indexSort:
outstr = ""
if temIndex[0] == 1:
outstr = outstr + filename
for temItem in dateItem:
outstr = outstr + ","
if temItem == dateItem[7]: # 多加一个空格
outstr = outstr + ","
if temItem in result[temIndex[1]]:
outstr = outstr + result[temIndex[1]][temItem]
else:
outstr = outstr + "0"
outstr = outstr + "\n"
fw.write(outstr)
fw.flush()
if __name__ == '__main__':
outTitle = ["10002(Force)", "10003(Moment)", "Load Point Information (Global Reference Frame)"]
outSubTitle= [["FX(N)", "FY(N)", "FZ(N)"],
["TX(N.mm)", "TY(N.mm)", "TZ(N.mm)"],
["X", "Y", "Z"]]
print("数据文件夹:")
rawDir = input()
fileList = os.listdir(rawDir)
dirName = rawDir.split("\\")
csvName = dirName[-1] + ".csv"
rawDir = rawDir + "\\"
wFile = rawDir + csvName
# 写文件头
fw = open(wFile, "w")
# write hearder
tems = ",,{0[0]},,,{0[1]},,,,{0[2]},,\n".format(outTitle)
fw.write(tems)
tems = ",Node ID,{0[0][0]},{0[0][1]},{0[0][2]},{0[1][0]},{0[1][1]},{0[1][2]},,{0[2][0]},{0[2][1]},{0[2][2]}\n".format(outSubTitle)
fw.write(tems)
# write data
for temFile in fileList:
if ".csv" in temFile:
continue
file = rawDir + temFile
readFileToCsv(fw, file, temFile)
fw.close()
print_hi('done')
记录每天生活的点点滴滴,呵呵呵呵呵呵

浙公网安备 33010602011771号