&引用;值错误:混合迭代和读取方法将丢失数据”;使用python从.txt文件的字符串中提取数字时发出的消息

&引用;值错误:混合迭代和读取方法将丢失数据”;使用python从.txt文件的字符串中提取数字时发出的消息,python,arrays,string,parsing,Python,Arrays,String,Parsing,我有一个程序,可以从.txt文件中获取数字,并将其放入数组中。问题是这些数字不是孤立的或有序的。.txt文件如下所示: G40 Z=10 A=30 X10 Y50 A=30 X40 Y15 A=50 X39 Y14 G40 Z=11 A=30 X10 Y50 A=30 X40 Y15 A=50 X39 Y14 输出应该是一个新的.txt文件,该文件具有以下数组格式 X Y Z 10 50 10 40 15 10 39 14 10 10 50 11 40 15 11 39 14 11 这就是我

我有一个程序,可以从
.txt
文件中获取数字,并将其放入
数组中。问题是这些数字不是孤立的或有序的。
.txt
文件如下所示:

G40 Z=10
A=30 X10 Y50
A=30 X40 Y15
A=50 X39 Y14
G40 Z=11
A=30 X10 Y50
A=30 X40 Y15
A=50 X39 Y14
输出应该是一个新的
.txt
文件,该文件具有以下数组格式

X Y Z
10 50 10
40 15 10
39 14 10
10 50 11
40 15 11
39 14 11
这就是我到目前为止所做的,尽管我不确定如何将输出写入新文件

inputfile = open('circletest1.gcode' , 'r')
def find_between( s, first, last ):
      try:
          start = s.index( first ) + len( first )
          end = s.index( last, start )
          return s[start:end]
      except ValueError:
          return ""
for i in range(203): inputfile.next() # skip first 203 lines
while True:
    my_text = inputfile.readline()
    z = find_between(my_text, "Z =", " ")
    x = find_between(my_text, "X", " ")
    y = find_between(my_text, "Y", " ")
    print(x ," ", y, " ", z)
    if not my_text:break

inputfile.close()
有一段时间我收到缩进错误,但我相信我已经解决了这个问题。现在我得到的错误消息是“值错误:混合迭代和读取方法将丢失数据”

我不知道从这里到哪里去,也不知道如何将结果导入另一个单独的新txt文件


另外,在我的代码中,是否有办法将z值保留在循环之外,直到分配了新的z值?

如果我理解正确,您希望将以
G
开头的行中的
z
值与以下行中的
X
Y
值结合起来(直到下一行
G
行)

如果是这样,我将使用一个循环,只在以
a
开头的行上打印,并在以
G
开头的行上保存新的
Z
值。我会用正则表达式进行行解析,但如果您愿意,可以使用简单的字符串操作(我将
拆分
,然后跳过相关项的第一个或多个字母)


非常感谢。我想出了一个解决方案,就在这篇文章发布的时候!现在我只是想弄清楚如何将结果导出到文件中。
import itertools
import re

z = None

with open('circletest1.gcode') as input_file:
    for line in itertools.islice(203, None):  # islice to skip the first 203 lines
        if line.startswith("G"):
            z = re.search(r"Z=(\d+)", line).group(1)
        elif line.startswith("A"):
            x, y = re.search(r"X(\d+) Y(\d+)", line).groups()
            print(x, y, z)