Regex似乎能做到这一点:import re
gcode = [
';TYPE:SKIN',
'G1 F1200 X-9.914 Y-9.843 E3.36222',
'G0 F9000 X-9.843 Y-9.914',
'G1 F1200 X9.914 Y9.843 E3.65844',
'G0 F9000 X9.914 Y9.702',
'G1 F1200 X-9.702 Y-9.914 E3.95254',
'G0 F9000 X-9.560 Y-9.914',
'G1 F1200 X9.914 Y9.560 E4.24451',
'G0 F9000 X9.914 Y9.419',
'G1 F1200 X-9.419 Y-9.914 E4.53437',
'G0 F9000 X-9.277 Y-9.914',
'G1 F1200 X9.914 Y9.277 E4.82211',
'G0 F9000 X9.914 Y9.136',
'G1 F1200 X-9.136 Y-9.914 E5.10772',
'G0 F9000 X-8.995 Y-9.914',
'G1 F1200 X9.914 Y8.995 E5.39123',
'G0 F9000 X9.914 Y8.853',
'G1 F1200 X-8.853 Y-9.914 E5.67260'
]
for line in gcode:
coord = re.findall(r'[XY]-\d.\d\d\d', line)
if coord:
print("{} - {}".format(coord[0], coord[1]))
结果:
^{pr2}$
编辑:
请尝试以下操作。我已将您的代码与我提供的示例进行了集成,并进行了一些调整:import re
with open('PI_25mm_cube.gcode') as gcode:
for line in gcode:
line = line.strip()
coord = re.findall(r'[XY].?\d+.\d+', line)
if coord:
print("{} - {}".format(coord[0], coord[1]))
通过将open替换为with,它可以防止您忘记close()文件,并降低引起任何内存问题的风险,正如我所理解的那样。在
由于不清楚您的代码是否将用于其他gcode文件,我的初始regex可能不适合。{a1使用提供的gci}创建了坐标。基于此信息,您可能会发现'[XY].?\d+.\d+'模式更有用。Regex101是测试这些功能的好网站