900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 使用python中openpyxl模块操作excel文件 计算单元格分子式的相对分子质量(二)

使用python中openpyxl模块操作excel文件 计算单元格分子式的相对分子质量(二)

时间:2022-09-10 18:09:00

相关推荐

使用python中openpyxl模块操作excel文件 计算单元格分子式的相对分子质量(二)

在(一)文中,在最后输出结果时,只是将相对分子质量的值输出,并未将对应的分子式输出,琢磨了一天,将改进的代码贴出来,希望大家可以给出点优化建议!

import openpyxlimport redef massMr(s):#定义计算相对分子质量的函数,list1 = ['O', 'N', 'C', 'H']dict1 = {'O':16, 'N':14, 'C':12, 'H':1}a = re.findall('\d+', s)sum = 0for i in range(4):sum += int(dict1[list1[i]]) * int(a[i])# print('相对分子质量为:%d'% sum)return sumwb = openpyxl.load_workbook('Molecularformula-max-Mass.xlsx')ws = wb.get_active_sheet()#print(ws)sheet = wb.get_sheet_by_name('Sheet1')#进入表单1ws1 = wb.create_sheet(index = 1, title = 'Sheet2')#新建表单2list1 = []list3 = []#print(sheet['A1'].value)for i in range(1, int(sheet.max_row) + 1, 2):#对奇数行进行迭代for j in range(1,int(sheet.max_column) + 1):#对列进行迭代,if sheet.cell(row = i, column = j).value == None:#单元格为空,跳出循环breakelse:#单元格不为空,进行计算cellMass = massMr(str(sheet.cell(row = i, column = j).value))#dict1 = dict((cellMass, str(sheet.cell(row = i, column = j).value)))#print(dict1)list2 = list1.insert(0,[int(cellMass), str(sheet.cell(row = i, column = j).value)])cellMass_max = max(list1)#使用max函数取相对分子质量最大的值,注意list1中的元素为列表(由两个元素构成)list4 = list3.append(cellMass_max)#将cellMass_max生成列表ws1.append(list3[0])#注意append时,参数需为列表,元祖等可迭代对象,此时需用list3[0],因为list3是由列表构成的列表wb.save('Molecularformula-max-Mass.xlsx')#保存在原文件中,list1 = []list3 = []

输出结果为:

等。

应该注意的是,在倒数第四行:

ws1.append(list3[0])

中,应该append(list3[0])。首先append时,应为列表,元组等可迭代的对象;其次,list3本身是一个由列表元素(每个列表元素由两个元素构成,一个是整型的cellMass,另一个是字符串分子式)构成的列表,所以需要访问list3[0]。如果是用append(list3)的话,则会报错:cannot convert [876, 'O24N24C12H12'] to Excel。原因就是list3 = [[876, 'O24N24C12H12']]。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。