如何获取化学元素列表?求批量拆分化学式及处理txt的Python代码
解决方案:化学式拆分、元素列表获取与批量文本处理
1. 获取化学元素列表
方法一:手动定义元素符号集合
直接创建包含化学元素符号的集合,适用于不需要完整元素库的场景:
# 示例:包含常见元素的集合,可根据需求补全所有元素 ELEMENT_SYMBOLS = { 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', # 可继续添加剩余元素符号 }
方法二:使用第三方库自动获取
借助periodictable库一键获取所有元素符号,先执行安装命令:
pip install periodictable
再编写代码:
import periodictable # 获取所有元素符号的集合 ELEMENT_SYMBOLS = {element.symbol for element in periodictable.elements}
2. 拆分单个/多个化学式
用正则表达式匹配元素符号(大写开头,可选小写后缀)及后续数字,实现精准拆分:
import re def split_formula(formula): # 正则模式:匹配元素符号 + 可选数字 pattern = re.compile(r'([A-Z][a-z]?)(\d*)') matches = pattern.findall(formula.strip()) # 组合结果:无数字则仅保留元素符号 return [f"{elem}{num}" if num else elem for elem, num in matches] # 处理多个化学式并合并为集合 formulas = ["C14H19NO", "C10H12O2", "C15H26O"] all_split_parts = set() for formula in formulas: all_split_parts.update(split_formula(formula)) # 输出结果:{'C14','H19','N','O','C10','H12','O2','C15','H26','O'} print(all_split_parts)
3. 批量处理TXT文件
以下代码可批量读取指定目录下的所有TXT文件(每行一个化学式),拆分后将去重结果写入新文件:
import os import re def split_formula(formula): pattern = re.compile(r'([A-Z][a-z]?)(\d*)') matches = pattern.findall(formula.strip()) return [f"{elem}{num}" if num else elem for elem, num in matches] def batch_process_txt(input_dir, output_dir): # 创建输出目录(不存在则自动创建) os.makedirs(output_dir, exist_ok=True) # 遍历目录下所有TXT文件 for filename in os.listdir(input_dir): if not filename.endswith('.txt'): continue input_path = os.path.join(input_dir, filename) output_path = os.path.join(output_dir, f"processed_{filename}") result_set = set() # 读取并处理每个化学式 with open(input_path, 'r', encoding='utf-8') as infile: for line in infile: formula = line.strip() if not formula: continue result_set.update(split_formula(formula)) # 写入处理结果 with open(output_path, 'w', encoding='utf-8') as outfile: outfile.write('\n'.join(result_set)) print(f"已完成:{filename} -> {output_path}") # 运行示例(替换为你的实际目录路径) if __name__ == "__main__": batch_process_txt( input_dir="./chemical_formulas", output_dir="./processed_results" )
使用说明
- 将所有待处理的TXT文件放入
chemical_formulas目录(可自定义路径) - 运行代码后,处理结果会保存到
processed_results目录,每个原文件对应一个前缀为processed_的结果文件 - 结果文件中每行是一个拆分后的元素-数字组合,已自动去重
内容的提问来源于stack exchange,提问作者Snorlax
相关产品推荐
相关产品推荐

