def nac(sheet):#nameAreaCleaner 工作表组分与面积数据清洗 传入工作表,依据数据起始标记,将一组原始数据分成两个元素数组,元素一为知名组分面积的数组,元素二为未名组分面积的数组 idx = []#数据起始标记索引 for row in range (0, sheet.nrows): if sheet.row_values(row) == sheet.row_values(0):#起始标记sheet.row_values(0) idx.append(row) arrs = []#存放清洗后的数据组 for k in range(0, len(idx)-1): know = []#知名组分面积 unknow = []#未名组分面积 bgn = idx[k]+1#数据开始行 end = idx[k+1]#数据结束行 for row in range(bgn, end): if(sheet.cell(row, 1).value != ''):#名称不为空 know.append(sheet.cell(row, 3).value) elif(sheet.cell(row, 1).value == '' and sheet.cell(row, 3).value != ''):#名称为空但面积不为空 unknow.append(sheet.cell(row, 3).value) #else:#空行 #print '\n' arrs.append([know, unknow]) return arrs
def lst(arr, n):#listSplit 数组分割,传入一个数组,将其分割成n个一组 lenIn = len(arr)#源数组长度 if lenIn % n: lenOut = lenIn / n + 1#目标长度 else: lenOut = lenIn / n narr = []#存放目标数组 for m in range(lenOut): narr.append(arr[m*n : (m+1)*n]) return narr
def adr(arr):#数组去重 array delete repeat anr = []#存放去重后数组 array not repeat for x in arr: if x not in anr: anr.append(x) return anr
def ptr(arr, node=0):#数组打印 array printer m = len(arr) for i in range (m): if type(arr[i]) == list: n = len(arr[i]) temp = '\t' * node for j in range (n): temp += str(arr[i][j]) + '\t' print temp if node:#默认不打印深层节点 ptr(arr[i], node+1) else: print(arr[i])
def hl(arr):#含量 content for i in range(len(arr)): temp = '' for j in range(len(arr[i][0])): temp += str(arr[i][0][j]) + '\t' print temp
def yg(arr):#有关物质 related substances for i in range(len(arr)): temp = '' if arr[i][1]:#其他杂质不为空 temp += str(max(arr[i][1])) + '\t' + str(sum(arr[i][1])) + '\t' #其他单个杂质最大 其他杂质总和 else: temp += '\t\t' for j in range(len(arr[i][0])): temp += str(arr[i][0][j]) + '\t' print temp
def rst(sheet, keyRow=5):#result 将处理好的结果表格转换成字典键值对 arr = [] key = sheet.row_values(keyRow) for row in range (keyRow+1, sheet.nrows): val = sheet.row_values(row) dic = dict(zip(key, val)) arr.append(dic) return arr