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

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

时间:2023-06-14 03:53:59

相关推荐

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

背景:本人是力学专业博士,从事分子动力学模拟,最近需要对结果进行数据分析,其中一项就是计算每一时刻的不同分子式的相对分子质量并将最大相对分子质量输出,换出曲线图。已知,分子式数据均保存在excel文件中,且各分子式均是由O,N,C,H按照顺序排列。如果使用excel计算的话,可能会比较慢,excel文件比较大,有十几兆。刚好最近在自学python,考虑用python中openpyxl模块进行计算。

步骤:

1. 定义计算包含O,N,C,H分子式的相对分子质量

2. 使用openpyxl模块操作excel

3. 将想得到的数据保存在新的表单里

附上代码,请各位大神提出更好的建议,修改成为更简洁的代码。

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('test.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.append(cellMass)cellMass_max = max(list1)#使用max函数取相对分子质量最大的值list4 = list3.append(cellMass_max)#将cellMass_max生成列表ws1.append(list3)#注意append时,参数需为列表,元祖等可迭代对象list3 = []wb.save('test.xlsx')#保存在原文件中,#print(list1, cellMass_max)list1 = []

最后附上excel文件的部分截图(事先的excel中的数据已经进行简单处理,各单元格均是O,N,C,H四种元素构成,且C原子数大于6):

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