在文件中,有一组起点和终点,我需要在这两个点之间提取数据,然后再次读取另一组点


*******************************************
START point 1
data 1 
data 2
data 3
data 4
END point 1
*******************************************
START point 2
data 1 
data 2
data 3
data 4
END point 2
*******************************************
*******************************************
START point 3
data 1 
data 2
data 3
data 4
END point  3
*******************************************
*******************************************
START point 4 
data 1 
data 2
data 3
data 4
END point 4
*******************************************

1.起点和终点是我给出的数字的所有名称,仅提供文件中的数据集。

  1. 我需要读取第一组起点和终点进行一些代码事务,然后再次读取第二组起始点和终点并进行一些代码事务。并继续doinf取消直到完成文件中的所有起点和终点。

预先感谢您

代码:

import re
def read_file():
    file_out = open("file_path.txt", "rb")
    start_rx = re.compile('.SUBCKT')
    end_rx = re.compile('.ENDS')
    start = False
    output = []
    with file_out as data_file:
        for line in data_file.readlines():
            if re.match(start_rx, line):
                start = True
            elif re.match(end_rx, line):
                start = False
            if start :
                output.append(line)
        print(output)
    #print(output[1])
if __name__ == '__main__' :
    read_file()

输出:

  ['.SUBCKT t9_invx0p5_znrw2 Z VDD VNW VPW VSS An', 'MP1 Z A VDD VNW pfet l=1.4e-08 nf=1 nfin=2 fpitch=4.8e-08 cpp=8.4e-08 ngcon=1 p_la=2e-09 plorient=0n', 'MN1 Z A VSS VPW nfet l=1.4e-08 nf=1 nfin=2 fpitch=4.8e-08 cpp=8.4e-08 ngcon=1 p_la=2e-09 plorient=0n', '.SUBCKT t9_invx0p75_znrw2 Z VDD VNW VPW VSS An', 'MP1 Z A VDD VNW pfet l=1.4e-08 nf=1 nfin=3 fpitch=4.8e-08 cpp=8.4e-08 ngcon=1 p_la=2e-09 plorient=0n', 'MN1 Z A VSS VPW nfet l=1.4e-08 nf=1 nfin=3 fpitch=4.8e-08 cpp=8.4e-08 ngcon=1 p_la=2e-09 plorient=0n']

您可以在开始点和终点之间读取数据并将其保存在列表中以进行任何其他工作:

the_list = []
dataList = []
with open('putt.txt', "r") as f:
    isLine = False
    for line in f:
        if "END point" in line:
            print(the_list)
            # do whatever you want with these lines
            dataList.append(the_list)
            the_list = []
            isLine = False
        if "START point" in line:
            isLine = True
        if "START point" not in line and isLine:
            if(len(line)>0):
                the_list.append(line)

输出:

['data 1 n', 'data 2n', 'data 3n', 'data 4n']
['data 1 n', 'data 2n', 'data 3n', 'data 4n']
['data 1 n', 'data 2n', 'data 3n', 'data 4n']
['data 1 n', 'data 2n', 'data 3n', 'data 4n']
print(dataList[0])    

输出:

['data 1 n', 'data 2n', 'data 3n', 'data 4n']

最新更新