"值错误:混合迭代和读取方法会丢失数据"消息,同时使用python从.txt文件中提取字符串中的数字

时间:2015-10-02 22:29:28

标签: python arrays string parsing

我有一个程序可以抓取.txt文件中的数字并将其放入array。问题是数字未隔离有序.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值为止?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望将以Z开头的行中的G值与以下行中的XY值相结合(直到下一个G行。

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

split