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

2024-04-19 23:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

*******************************************
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. 我需要读第一组开始点和结束点做一些代码事务,再次读第二组开始点和结束点,做一些代码事务。并继续执行直到完成文件中的所有起点和终点

先谢谢你

代码:

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 A\n', '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=0\n', '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=0\n', '.SUBCKT t9_invx0p75_znrw2 Z VDD VNW VPW VSS A\n', '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=0\n', '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=0\n']

Tags: reoutputdatalinevssrxstartfile
1条回答
网友
1楼 · 发布于 2024-04-19 23:29:30

您可以读取起点和终点之间的数据,并将它们保存在列表中以执行任何其他工作:

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 2\n', 'data 3\n', 'data 4\n']
['data 1 \n', 'data 2\n', 'data 3\n', 'data 4\n']
['data 1 \n', 'data 2\n', 'data 3\n', 'data 4\n']
['data 1 \n', 'data 2\n', 'data 3\n', 'data 4\n']

print(dataList[0])    

输出:

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

相关问题 更多 >