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

如何提取指定标点符号后符合规则的目标数字

提取目标数字的实现方案

核心匹配逻辑

目标数字的共有特征可以直接用来过滤无效数字:

  • 仅出现在两个位置:整个文本的开头,或者分隔符|之后的片段开头
  • 数字后紧跟英文句号.,不会出现-等特殊符号
    不符合上述特征的234、7-38-030等非目标数字会被自动排除。

方法1:正则表达式实现(推荐)

直接用正则匹配符合规则的数字即可,Python示例代码如下:

import re

# 待处理原始文本
raw_text = "3. MANAGEMENT, FOOD EMPLOYEE  Comments 234:  FOUND NO EMPLOYEE  ISSUED. | 5. PROCEDURES FOR RESPONDING TO VOMITING AND DIARRHEAL EVENTS - Comments:   | 10. ADEQUATE HANDWASHING SINKS 7-38-030(C), NO CITATION ISSUED.  | 47. FOOD & NON-FOOD "

# 正则规则:匹配文本开头或|后的连续数字,数字后紧跟.
pattern = r'(?:^|\|)\s*(\d+)\.'
# 提取结果并转成整数
target_nums = [int(num) for num in re.findall(pattern, raw_text)]

print(target_nums)
# 输出结果:[3, 5, 10, 47]

方法2:分割文本遍历实现(无正则依赖)

如果不想用正则,可以先按|分割文本,再逐个提取每个片段开头的数字:

raw_text = "3. MANAGEMENT, FOOD EMPLOYEE  Comments 234:  FOUND NO EMPLOYEE  ISSUED. | 5. PROCEDURES FOR RESPONDING TO VOMITING AND DIARRHEAL EVENTS - Comments:   | 10. ADEQUATE HANDWASHING SINKS 7-38-030(C), NO CITATION ISSUED.  | 47. FOOD & NON-FOOD "

target_nums = []
# 按|分割所有内容片段
segments = raw_text.split('|')
for seg in segments:
    # 去掉片段前后的空白字符
    seg = seg.strip()
    current_num = ""
    # 遍历片段开头的字符,提取连续数字
    for char in seg:
        if char.isdigit():
            current_num += char
        else:
            break
    if current_num:
        target_nums.append(int(current_num))

print(target_nums)
# 输出结果:[3, 5, 10, 47]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:48:03