python 对文件的信息筛选

要求只提取每行X Y后的数字 ,若该行无X或Y ,则X或Y保持上一行不变(如第八行无Y,则Y值为-9.25)生成二维数组输出一个新的txt:
如 3.25 0
2.25 -0.127821
2.25 0

--文本内容22.txt
G01 X3.25 Y0 F270
G01 X3.25 Y-0.3 F270
G01 X3.25 Y1 F270
G01 Y2 F270
G01 X6.25 Y3 F270
G01 X5.25 F270
G01 X3.25 Y5 F270
G01 X3.25 Y6

程序
#!/usr/bin/env python
# -*- coding: utf-8 -*-
a=open('22.txt').readlines()
last_i=[]
last_j=[]
fiee = open('33.txt','w')
for i in a:
    i=i.strip().split()
    if i[1].find('X')<0:
        i.insert(1,'')
    if i[2].find('Y')<0:
        i.insert(2,'')        
    print  i
    if i[1].find('X')<0:
        if last_i==[]:
            i[1] = ''
        else:
            i[1] = last_i[1]
    else:
        i[1] = i[1][1:]
    last_i = i
    if i[2].find('Y')<0:
        if last_j==[]:
            i[2] = ''
        else:
            i[2] = last_j[2]
    else:
        i[2] = i[2][1:]
    last_j = i
    #temp.append(i[1]+' '+i[2])
    fiee.write(i[1]+' '+i[2]+'\n')
fiee.close()

---33.txt的结果
3.25 0
3.25 -0.3
3.25 1
3.25 2
6.25 3
5.25 3
3.25 5
3.25 6

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-20
import re

with open("test.txt") as A:
    x = y = ''
    for eachline in A:
        m1 = re.search("X(.*?)\s",eachline)
        m2 = re.search("Y(.*?)\s",eachline)
        if m1:
            x = m1.group(1)
        if m2:
            y = m2.group(1)
        print x,y

本回答被提问者采纳