python 数据结构处理

 ['分子式:', 'C', '4', 'H', '6', 'O', '2', ';CH', '3', 'COOCHCH', '2', '分子量:', '86.09']
 
 如何把这里的分子式换成
 分子式:C4H6O2;CH3COOCHCH2
 
 我想到的是把这个列表弄成字符串 然后替换掉,请问还有其他办法吗?
 我要的效果是这样:
  ['分子式:', "C4H6O2;CH3COOCHCH2", '分子量:', '86.09']
  
  

目标网址是这个:
https://china.guidechem.com/datacenter/msds/c/756.html

spe = htmlResult.xpath('//tr[@bgcolor="fafafa"]//text()|//tr[@bgcolor="#ffffff"]//text()')
我是通过这个把所有数据都抓出来

list[1:-2] =["".join(list[1:-2])] 如果这样写死了,后面的数据就不行了

阅读 2.5k
3 个回答

假设你要处理的数据是['分子式:', x, x, x, '分子量:', x]

list = ['分子式:', 'C', '4', 'H', '6', 'O', '2', ';CH', '3', 'COOCHCH', '2', '分子量:', '86.09']
list[1:-2] =["".join(list[1:-2])]
print(list)

如果只是处理你问题里的这个数据,拿分子式和分子量作为关键词进行处理即可:

l =  ['分子式:', 'C', '4', 'H', '6', 'O', '2', ';CH', '3', 'COOCHCH', '2', '分子量:', '86.09']
res = []
tmp = ''
for s in l:
    if s.startswith('分子'):
        if tmp:
            res.append(tmp)
            tmp = ''
        res.append(s)
    else:
        tmp += s
res.append(tmp)
print(res)

['分子式:', 'C4H6O2;CH3COOCHCH2', '分子量:', '86.09']

实际数据是什么样的情况,是不是都是这种结构需要你自己判断再改变逻辑了

同构字符串类型列表,用切片,字符串拼接及参数解构一行解决

>>> l =  ['分子式:', 'C', '4', 'H', '6', 'O', '2', ';CH', '3', 'COOCHCH', '2', '分子量:', '86.09']
>>> [l[0],"".join(l[1:-2]),*l[-2:]]
['分子式:', 'C4H6O2;CH3COOCHCH2', '分子量:', '86.09']
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题