这个文件中如果化合物的数量找不到如何处理
时间: 2024-10-28 22:08:55 浏览: 14
在这个文件中,当化合物的数量(`quantity`)找不到时,程序会将其设置为 `0` 或者空字符串,并继续执行后续操作。具体处理方式如下:
1. **默认值设置**:在多个地方,当 `quantity` 为空或无效时,会将其设为 `0` 或空字符串。
```python
if quantity == '':
quantity0 = 0
else:
quantity0 = deal_with_quantity(quantity)
```
2. **函数 `deal_with_quantity` 处理**:该函数负责处理各种格式的 `quantity` 值,包括范围值和带有单位的值。如果 `quantity` 为空或无效,最终返回 `0`。
```python
def deal_with_quantity(quantity):
try:
if quantity is None:
return 0
if '-' in str(quantity) and re.findall('\D', str(quantity).replace('-', '')) == '':
ranges = quantity.split('-')
average = (float(ranges[0].replace('(', '').replace(')', '')) + float(ranges[1].replace('(', '').replace(')', ''))) / 2.0
return float(re.sub("[^\d\.]", "", str(average)))
elif '–' in str(quantity):
ranges = quantity.split('–')
average = (float(ranges[0].replace('(', '')) + float(ranges[1].replace(')', ''))) / 2.0
return float(re.sub("[^\d\.]", "", str(average)))
else:
try:
return float(str(quantity).replace('ten', '10').replace('nine', '9').replace('eight', '8').replace('seven', '7').replace('six', '6').replace('five', '5').replace('four', '4').replace('three', '3').replace('two', '2').replace('zero', '0').replace(',', '').replace('◦', '').replace(')', '').replace('vol', '').replace('m2', '').replace('(', '').replace('°', '').replace('≈', '').replace('(', '').replace(')', '').replace('g', '').replace('to', '').replace('∼', '').replace('˜', '').replace('-', '').replace('∼', '').replace(',', '').replace('wt', '').replace('·', '').replace('⩾', '').replace('˜', '').replace('+', '').replace('≈', '').replace('±', '').replace('0.27-0.28', '0.27'))
except:
return 0
except:
return 0
```
3. **分类材料**:在 `ClassfyMaterials` 和 `ClassfyMaterialsRatio` 函数中,如果某个材料的数量未找到,也会将其设为 `0` 或空字符串。
```python
for material, quantity in material_quantity.items():
if quantity == '':
quantity0 = 0
else:
quantity0 = deal_with_quantity(quantity)
```
通过这些处理方式,程序能够确保即使某些化合物的数量找不到,也不会导致程序崩溃,而是继续正常运行并记录相关数据。
阅读全文