在 Python 中仅打印整行的一部分

Print only a part of a whole line in Python

到目前为止我的代码如下所示:

g = open("spheretop1.stl", "r")
m = open("morelinestop1.gcode", "w")
searchlines = g.readlines()
file = ""

for i, line in enumerate(searchlines):
    if "outer loop" in line:
        p4 = searchlines[i+1]
        p5 = searchlines[i+2]
        p6 = searchlines[i+3]

文件 spheretop1.stl 如下所示:

solid spheretop1
   facet normal -4.647520e-002 -9.989174e-001 -2.029244e-003
      outer loop
         vertex 1.930371e+002 1.218346e-001 1.995131e+002
         vertex 1.930244e+002 1.218346e-001 1.997564e+002
         vertex 1.860572e+002 4.871899e-001 1.995131e+002
      endloop
   endfacet
   facet normal 4.650354e-002 -9.989174e-001 -1.217645e-003
      outer loop
         vertex 2.069799e+002 1.218346e-001 2.000000e+002
         vertex 2.069756e+002 1.218346e-001 1.997564e+002
         vertex 2.139428e+002 4.871899e-001 1.995131e+002
      endloop
   endfacet
   facet normal -2.323405e-002 -9.997293e-001 -1.217645e-003
      outer loop
         vertex 1.930244e+002 1.218346e-001 1.997564e+002
         vertex 1.930371e+002 1.218346e-001 1.995131e+002
         vertex 2.000000e+002 0.000000e+000 2.000000e+002
      endloop
   endfacet

我想要做的是 'p4' 是一组数字(浮点数),从顶点行中的第一个数字开始,然后是顶点行中的第二个数字。所以我希望 p4 看起来像这样:

p4 = (193.0371, 0.1218346).

之后我想要一个 p5 和一个 p6,p5 是 (193.0244, 0.1218346),p6 是 (186.0572, 0.4871899)。现在它给我的是 "outer loop" 下的整行,我只想要该行的特定部分。有人知道怎么做吗?谢谢。

list1= p4.split()   # gives  list1= ['vertex','x','y','z']
p4=[float(list[1]),float(list[2])]  # gives you a list of x and y

就这么简单:

p4 = map(float, searchlines[i+1].split()[1:3])