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

如何批量处理无空格天体名称以适配astroquery Simbad.query_object?

批量处理无空格天体名称适配Simbad查询

针对批量无空格天体名称无法正常查询的问题,最直接的解决方式是用正则表达式批量插入空格,匹配这类天体名称「字母前缀+数字+字母后缀」的通用格式,自动拆分出符合要求的空格。

具体实现代码

import re
from astroquery.simbad import Simbad

def format_object_name(name):
    # 匹配「字母+数字+可选字母后缀」的模式,在字母与数字、数字与字母间插入空格
    # 示例:W3OH → W 3 OH,NGC1234 → NGC 1234,M82 → M 82
    formatted = re.sub(r'([A-Za-z]+)(\d+)([A-Za-z]+)?', r'\1 \2 \3', name)
    # 清理末尾可能出现的多余空格(比如无后缀的名称)
    return formatted.strip()

# 你的无空格天体名称列表
unformatted_names = ["W3OH", "M82", "NGC1234", "IC434"]
# 批量格式化名称
formatted_names = [format_object_name(name) for name in unformatted_names]

# 批量查询示例
for name in formatted_names:
    try:
        result = Simbad.query_object(name)
        if result is not None:
            print(f"查询成功:{name}")
            print(result)
        else:
            print(f"无匹配结果:{name}")
    except Exception as e:
        print(f"查询失败:{name},错误信息:{str(e)}")

补充说明

  • 正则表达式([A-Za-z]+)(\d+)([A-Za-z]+)?覆盖了绝大多数常见天体命名格式,既能处理带后缀的名称(如W3OH),也能处理纯前缀+数字的名称(如M82)。
  • 如果遇到特殊格式的名称(比如带连字符、特殊符号的),格式化后仍可能查询失败,建议把这类异常名称单独收集,后续手动调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:32:07