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

Python访问biip库GS1解析结果嵌套对象指定ai属性方法

biip库解析GS1编码提取指定AI值的实现方案

核心属性访问规则

遍历result.gs1_message.element_strings返回的每一个GS1ElementString对象时,通过两层属性访问即可拿到AI编码字符串:单个元素对象.ai.ai。
其中第一层.ai返回嵌套的GS1ApplicationIdentifier实例,第二层.ai是该实例下存储的字符串类型应用标识符值(比如'01'、'15'、'10'),直接判断该值即可做分支处理。

完整实现代码

import biip

# 执行GS1编码解析
parse_result = biip.parse("010703206980498815210526100329")
element_strings = parse_result.gs1_message.element_strings

# 遍历所有元素,按目标AI做分支处理
for elem in element_strings:
    current_ai = elem.ai.ai
    # 跳过非目标AI
    if current_ai not in {"01", "15", "10"}:
        continue

    if current_ai == "01":
        # AI=01对应GTIN全球贸易项目代码
        gtin_raw = elem.value
        # 可直接访问结构化GTIN属性,无需自行解析
        gtin_check_digit = elem.gtin.check_digit
        gtin_prefix_info = elem.gtin.prefix.usage
        print(f"GTIN编码:{gtin_raw},校验位:{gtin_check_digit},前缀归属:{gtin_prefix_info}")

    elif current_ai == "15":
        # AI=15对应最佳保质期,biip已自动解析为日期对象
        best_before_raw = elem.value
        best_before_date = elem.date
        print(f"最佳保质期原始值:{best_before_raw},解析后日期:{best_before_date}")

    elif current_ai == "10":
        # AI=10对应批次号
        batch_number = elem.value
        print(f"生产批次号:{batch_number}")

快捷取值方式

如果需要快速获取指定AI对应的元素,不需要每次循环判断,可以先生成AI到元素的映射字典,直接按键取值:

# 构建AI映射表
ai_lookup = {elem.ai.ai: elem for elem in element_strings}

# 直接取值使用
gtin_value = ai_lookup["01"].value
expire_date = ai_lookup["15"].date
batch_no = ai_lookup["10"].value

注意事项

  • 不要混淆对象层级:elem.ai是应用标识符的配置对象,不是AI编码字符串本身,必须再取一层.ai属性才能拿到编码值
  • 常用AI的结构化结果biip已经提前解析完成:日期类AI直接取elem.date即可拿到datetime.date类型结果,GTIN/SSCC/GLN类编码分别存在对应的elem.gtin/elem.sscc/elem.gln属性中,不需要手动用正则拆分原始value
  • 如果待解析编码中存在重复AI(比如同一编码包含多个批次),上述字典映射方式只会保留最后一个匹配的元素,需要全量处理时请用遍历分支的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:18:20