|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 2OLEGEND 于 2018-2-3 15:05 编辑
在使用python中openpyxl模块处理excel时,计算奇数行单元格相对分子质量,并将相对分子质量值和对应的分子式保存成一个字典,为什么会在创建字典时,出现这个错误:cannot convert dictionary update sequence element #0 to a sequence,该如何改正?下面将代码和excel截图发上来。其实我的目的是获得相对分子质量最大的值和其对应的分子式,可是构造字典一直出错,我的想法是将每一行的相对分子质量和对应的分子式构建成一个字典,然后将最大的值取出来,写入新的表单。
谢谢各位老师了,该怎么处理?
- import openpyxl
- import re
- def massMr(s):#定义计算相对分子质量的函数,
-
- list1 = ['O', 'N', 'C', 'H']
- dict1 = {'O':16, 'N':14, 'C':12, 'H':1}
-
- a = re.findall('\d+', s)
-
- sum = 0
-
- for i in range(4):
-
-
- sum += int(dict1[list1[i]]) * int(a[i])
-
- # print('相对分子质量为:%d'% sum)
-
- return sum
- wb = openpyxl.load_workbook('test.xlsx')
- ws = wb.get_active_sheet()
- #print(ws)
- sheet = wb.get_sheet_by_name('Sheet1')
- #print(sheet['A1'].value)
- for i in range(1, int(sheet.max_row) + 1, 2):#对奇数行进行迭代
- for j in range(1,50):#对列进行迭代,之所以选50是因为这是测试版,最终的excel列可能较多
- if sheet.cell(row = i, column = j).value != None:#单元格不为空,进行计算
- cellMass = massMr(str(sheet.cell(row = i, column = j).value))
- dict1 = dict((cellMass, str(sheet.cell(row = i, column = j).value)))
- print(dict1)
- else:#单元格为空,则跳出这个循环,进行下次循环
- break
- print('\n')
复制代码
这是excel的截图:
|
-
|