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

Python逐行读取stdin时如何处理多分隔符提取指定字段

解决方案

最稳妥的实现方式是结合正则匹配和字符串逆序分割,不需要关心行内分隔符的格式差异,直接按目标内容的特征提取即可:

  • 时间戳的特征是整行中第一个出现的连续数字序列
  • 命令内容的特征是整行最后一个;之后的所有内容

实现代码

import sys
import re

# 预编译正则,匹配连续数字序列,提升遍历效率
timestamp_pat = re.compile(r'\d+')

for line in sys.stdin:
    line = line.strip()
    if not line:
        continue
    # 提取第一个数字序列作为时间戳
    ts_res = timestamp_pat.search(line)
    if not ts_res:
        # 未匹配到时间戳可按自身需求处理,此处示例直接跳过
        continue
    epoch_ts = int(ts_res.group())
    # 提取最后一个分号后的命令内容
    if ';' not in line:
        continue
    cmd = line.rsplit(';', 1)[-1].strip()
    # 后续可直接使用提取到的epoch_ts和cmd处理业务逻辑
    print(f"时间戳:{epoch_ts},命令:{cmd}")

逻辑说明

  1. 正则匹配仅抓第一个出现的连续数字,不管数字前面的分隔符是冒号、空格还是其他符号,都不会影响提取结果
  2. 用rsplit(';', 1)从字符串右侧开始仅做1次分割,不管行内有多少个分号、分号前的分隔符格式多混乱,都能准确拿到最后一个分号后的完整命令内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:57:04