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

如何用Python提取文本文件中Measurement区间内的可变数量数值?

Python提取文本中指定测量区间的数值

这里提供两种简洁的实现方式,适配可变数量的数值行:

方法一:逐行遍历+状态标记(推荐大文件/高容错场景)

通过标记当前是否处于目标测量区间,逐行读取并收集数值,内存占用低且容错性强:

measurements = {}
current_measure = None

with open("your_file.txt", "r") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue  # 跳过空行
        
        # 进入新的测量区间
        if line.startswith("Starting_Measurement"):
            current_measure = line
            measurements[current_measure] = []
        # 退出当前测量区间
        elif line.startswith("End_Measurement"):
            current_measure = None
        # 处于测量区间时,尝试转换并收集数值
        elif current_measure is not None:
            try:
                num = float(line)
                num = int(num) if num.is_integer() else num
                measurements[current_measure].append(num)
            except ValueError:
                continue  # 跳过非数值行

# 查看结果
for name, values in measurements.items():
    print(f"{name}: {values}")

优势:

  • 逐行处理,适合超大文件,不会一次性加载全部内容到内存
  • 自动适配任意数量的Starting_MeasurementX区间(不止两个也能处理)
  • 跳过空行和非数值行,容错性好

方法二:正则表达式匹配(推荐小文件/简洁代码场景)

一次性读取文件内容,用正则匹配所有目标区间,代码更紧凑:

import re

with open("your_file.txt", "r") as f:
    content = f.read()

# 匹配编号对应的测量区间,确保Starting和End的编号一致
pattern = r"Starting_Measurement(\d+)\s+([\d\s]+?)\s+End_Measurement\1"
matches = re.findall(pattern, content, re.DOTALL)

measurements = {}
for idx, values_str in matches:
    values = []
    for num_str in values_str.strip().split():
        try:
            num = float(num_str)
            num = int(num) if num.is_integer() else num
            values.append(num)
        except ValueError:
            continue
    measurements[f"Starting_Measurement{idx}"] = values

# 查看结果
for name, values in measurements.items():
    print(f"{name}: {values}")

优势:

  • 代码行数少,逻辑集中
  • 一次性提取所有区间,适合文件体积较小的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:54:23