我无法在内部if else语句中找到变量

时间:2017-03-11 06:45:10

标签: python

我正在做一些项目。我有C ++和Java背景但我没有python背景。 我给出了如下的txt文件:

  

G1 X000 Y00
  X00
  Z000
  G0 X121.212 Z5.32
  X0.00 Y3.000

我需要将G ..添加到下一行,直到它看到新的G ..它可以是G1或G0或G5等。所以结果如下所示

  

G1 X000 Y00
  G1 X00
  G1 Z000
  G0 X121.212 Z5.32
  G0 X0.00 Y3.000

我的代码如下。

[1:3; 5:0; 10:12; ...]

我正在尝试从上一行获取G1或G0并分配给 命令 。有用。当我尝试在最后的 else语句中时,它会显示我的命令 变量是空的,我不知道如何处理它。

2 个答案:

答案 0 :(得分:0)

拆分每一行并检查第一个单词是否以G开头。如果是,则将其作为要添加为前缀pre的单词。 如果该行没有前缀,则将存储的单词与带空格的行一起加入!!

pre=""
for  line  in f1.read().splitlines():
    word = line.split()
    if word and word[0] and word[0][0]=="G":
        pre=word[0]
    else:
        line = " ".join([pre, line])
    print line

输出

G1 X000 Y00
G1 X00
G1 Z000
G0 X121.212 Z5.32
G0 X0.00 Y3.000

希望它有所帮助!

答案 1 :(得分:0)

您可以检查'G'in string,将其子串并将其用于没有的行。 我试试了,

with open('newfile.txt','r') as f:
Gval = 'G0'
newlines=[]
for line in f:
    if 'G' in line:
        Gval = line[line.index('G'):line.index(' ')]
        newlines.append(line)
    else:
        l = Gval+' '+line
        newlines.append(l)
f.close()
newf = open('filenew.txt','w')
for item in newlines:
    newf.write("%s"%item)   
newf.close()