提取 HS 编码前的描述性文本(排除 HS 编码本身)-Python教程

本文介绍如何使用正则表达式精准提取商品描述文本——即每个 `hs code`(及其变体如 `h.s. code`、`hs.code` 等)**之前紧邻的非空描述片段**,并排除编码部分本身,适用于报关单、发票等非结构化贸易文本解析。

在处理外贸单据(如发票、装箱单)的原始文本时,常需从混杂的字符串中提取每项商品的描述信息,而这些描述通常位于 HS CODE(或其常见变体:H.S. CODE、HS.CODE、H.S CODE 等)之前。难点在于:HS 编码格式多变(含冒号、点、空格、数字/字母混合),且前后无固定分隔符;直接使用贪婪匹配易将前一个 HS 编码后的文本错误纳入当前结果。

✅ 推荐正则方案(通用健壮版)

以下正则表达式可稳定捕获“HS 编码前最后一个非空描述片段”,自动忽略编码本身及前置冗余空白:

import re

txt = '''293 PACKAGE(S)x000D PRINTED HEAD ITEM: KA02033-E844 A5 :INVOICE: FIT-2401-01 HS CODE: 84732:100 KNITTED FABRIC H.S CODE: 6006.2:2.00 INV#: TSTEX0124-009 (TC-240021:) WOVEN TWILL CAP HS.CODE: 6505.00:.90 KNITTED FABRIC HS 600410 FABRIC: P57101 (T989, 100% POLYESTER, WIDT:H 152CM) HS CODE : 54075200_x000D_ (*)EMA:IL:[email protected] USCI:913101141:32276439L (**)USCI:

Container DRYU9124108: 13 PACKAGE(S), AUTOMATIC TOOTH TURNING MACHINESD-CYJ500-1000 HS CODE:84597010; '''

# 核心正则:匹配以非空白字符开头、非贪婪延伸至 HS 编码标识前的文本
pattern = r'(\S.*?)\s+H\.?S\b\.?(?:\s*CODE)?\s*:?\s*\S+'
matches = re.findall(pattern, txt, re.IGNORECASE | re.DOTALL)

# 清理首尾空白(因非贪婪匹配可能残留空格)
result = [s.strip() for s in matches]
print(result)

输出结果:

[
  '293 PACKAGE(S)x000D PRINTED HEAD ITEM: KA02033-E844 A5 :INVOICE: FIT-2401-01',
  'KNITTED FABRIC',
  'WOVEN TWILL CAP',
  'KNITTED FABRIC',
  'FABRIC: P57101 (T989, 100% POLYESTER, WIDT:H 152CM)',
  'Container DRYU9124108: 13 PACKAGE(S), AUTOMATIC TOOTH TURNING MACHINESD-CYJ500-1000'
]

? 正则关键点解析

部分 说明
(\S.*?) 捕获组:\S 确保匹配从非空格字符开始(避免匹配纯空白);.*? 非贪婪匹配任意字符(含换行,因启用 re.DOTALL),直到下一个模式出现
\s+H\.?S\b\.? 匹配 HS 或 H.S 或 HS. —— \b 保证 S 是单词边界,防止误匹配 HSS 等
(?:\s*CODE)? 可选非捕获组:CODE 可带任意空格,且整体可省略(兼容 HS 600410)
\s*:?\s*\S+ 匹配可选冒号及后续非空字符(即 HS 编码本体),确保不截断编码

⚠️ 注意事项与进阶建议

  • INV#: 特殊场景:若文本中存在类似 INV#: TSTEX0124-009 (TC-240021:) WOVEN TWILL CAP 的结构,且希望跳过 INV#: 及其后两个词再提取 WOVEN TWILL CAP,需显式增强规则:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 提取 HS 编码前的描述性文本(排除 HS 编码本身)-Python教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001517+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001517+
  • 本周更新: 0+
  • 最后更新: 2026-03-16