You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取化学元素列表?求批量拆分化学式及处理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"
    )

使用说明

  1. 将所有待处理的TXT文件放入chemical_formulas目录(可自定义路径)
  2. 运行代码后,处理结果会保存到processed_results目录,每个原文件对应一个前缀为processed_的结果文件
  3. 结果文件中每行是一个拆分后的元素-数字组合,已自动去重

内容的提问来源于stack exchange,提问作者Snorlax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:01:10