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

如何修改CSV处理脚本以跳过LASER_ON/LASER_OFF行并补全X/Y值

机床CSV坐标补全脚本修改方案(兼容LASER指令行)

我有一个包含简化机床程序的CSV文件,内容如下:

X51.972,Y1433.401
LASER_ON
X41.972
Y1438.401
X51.97
LASER_OFF
X51.972,Y1382.401
LASER_ON
X41.972
Y1377.401
X51.97

需求是:

  • 当某行只有X值时,自动补全上一行的Y值
  • 当某行只有Y值时,自动补全上一行的X值
  • 跳过所有LASER_ON和LASER_OFF行

原脚本仅在无LASER指令行时有效,修改方案如下:

关键修改点

  1. 跳过LASER指令行:读取每行时直接判断并跳过激光控制指令,不进入坐标处理逻辑
  2. 维护独立坐标状态:用单独变量保存最新的X、Y坐标,避免依赖输出列表的历史项,逻辑更清晰且避免索引错误

修改后的完整脚本

import csv

# 替换为你的目标文件路径
output_csv_file = "machine_program.csv"

processed_lines: list[tuple[str, str]] = []
last_valid_x = None
last_valid_y = None

with open(output_csv_file, 'r') as input_file:
    for line in map(str.strip, input_file):
        # 跳过空行和LASER指令行
        if not line or line.startswith(("LASER_ON", "LASER_OFF")):
            continue
        
        coordinate_parts = line.split(",")
        if coordinate_parts[0].startswith("X"):
            current_x = coordinate_parts[0]
            # 处理带Y值的完整行或仅X的单行
            if len(coordinate_parts) > 1 and coordinate_parts[1].startswith("Y"):
                current_y = coordinate_parts[1]
                last_valid_y = current_y
            else:
                current_y = last_valid_y
            processed_lines.append((current_x, current_y))
            last_valid_x = current_x
        elif coordinate_parts[0].startswith("Y"):
            current_y = coordinate_parts[0]
            # 处理带X值的完整行或仅Y的单行
            if len(coordinate_parts) > 1 and coordinate_parts[1].startswith("X"):
                current_x = coordinate_parts[1]
                last_valid_x = current_x
            else:
                current_x = last_valid_x
            processed_lines.append((current_x, current_y))
            last_valid_y = current_y

# 写入处理后的内容
with open(output_csv_file, 'w', newline='') as output_file:
    csv_writer = csv.writer(output_file)
    csv_writer.writerows(processed_lines)

脚本说明

  • 新增空行和LASER指令行的过滤逻辑,直接跳过无需处理的内容
  • 用last_valid_x和last_valid_y记录最近一次的有效坐标,处理单行X/Y时直接取用,避免依赖输出列表的历史项
  • 保留原有的坐标补全逻辑,每次处理后自动更新最新坐标状态
  • 兼容完整坐标行(同时带X、Y)和单行坐标的处理场景

内容的提问来源于stack exchange,提问作者volk.SWAG.en

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:44:59