python - 使用 python 从 .txt 文件中的字符串中提取数字时出现 "Value error: Mixing iteration and read methods would lose data "消息

标签 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

这就是我到目前为止所做的,尽管我不确定如何将输出写入新文件......

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 开头的行上打印,并在以 A 开头的行上保存新的 ZG。我会使用正则表达式进行行解析,但如果您愿意,您可以使用简单的字符串操作(我会拆分,然后跳过相关项目的第一个字母或多个字母)。

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)

关于python - 使用 python 从 .txt 文件中的字符串中提取数字时出现 "Value error: Mixing iteration and read methods would lose data "消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32916769/

相关文章:

删除 site.py 后 Python 失败

python - 将 TFLite 转换为 Lite

arrays - 将类对象追加到数组 [Swift]

c++ - 使用数组和 rand 来计算 1-10 之间整数的实例数?

java - 如何检查一个单词是否包含一个字母或一组字母?

python - 如何根据行的内容分割pyspark数据帧

python - XGBoost feature_importances_ 参数返回 nan

javascript - 反转 JavaScript 中的字符串 : Why is my answer not passing the test?

c# - StringBuilder.Append 与 StringBuilder.AppendFormat

c++ - 本身的子串