如何补全*.f25文本文件中缺失的节拍记录行?
补全F25设备记录文件中5303行后的缺失节拍记录
我需要处理*.f25格式的设备记录文件,这类文件里每一行5303后面必须跟3条节拍记录——就是那些以 1,、 2,、 3,开头的行。但现在有些文件里,5303行后会缺第2、3条记录,程序必须要有3条才能启动,所以得把缺失的行补上:复制上一条节拍记录,把开头的编号改成对应的2或3就行。
我是Python新手,自己写了段代码但完全不对,根本不知道怎么改:
filename = 'C:\xxx\xx\Helga\B22 20220829 km0,0-7,8 LJ.F25' with open(filename,'r') as infile: inlines=infile.readlines() for line in inlines: if line.find(' 3, ') !=-1: line.copy(' 2, ') print('done')
文件示例(缺失情况已标注)
5001,25.20,1,40, 3, 1,"FwdWin ",9,03,"043927D019224AA4A472BFE970F9E57" 5002,"25SIN ","8002-460","CP15-754" 5003,"Dynatest","Asphalt-","L93 2022","F25" 5010,0,0,0,0,0,0,0,3,1,0,0,0,0,0,1,0,0,0,0,0,1,"MDB","SI","kilometers" 5011,0,1,2022,07,27,15,28,0,"Non",000 5200,"7159 ",2,1.000, 64.7, 0.01, 2.990 5201,"8051 ",5,1.000,1.011 5202,"8052 ",5,1.000,0.985 5203,"8053 ",5,1.000,1.012 5204,"8054 ",5,1.000,1.032 5205,"8055 ",5,1.000,0.967 5206,"8056 ",5,1.000,1.019 5207,"8057 ",5,1.000,0.997 5208,"8058 ",5,1.000,0.994 5209,"8059 ",5,1.000,0.991 5210,"NA ",0,0.000,0.000 5211,"NA ",0,0.000,0.000 5212,"NA ",0,0.000,0.000 5213,"NA ",0,0.000,0.000 5214,"NA ",0,0.000,0.000 5215,"NA ",0,0.000,0.000 5216,"NA ",0,0.000,0.000 5217,"NA ",0,0.000,0.000 5218,"NA ",0,0.000,0.000 5020, 150, 0, 200, 300, 450, 600, 900, 1200, 1500, 1800,N0 ,N0 ,N0 ,N0 ,N0 ,N0 ,N0 ,N0 ,N0 5021, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0,N0 ,N0 ,N0 ,N0 ,N0 ,N0 ,N0 ,N0 ,N0 5022,1, 0, 0, 50, 100, 200, 390, 5023,1,3,0, 0.051, 11.400, 0.051, -0.147, 0.000,1,1 5024,1,0,0,1,3,3, 5, 2.0, 2, 2.0,1,1,0, 60 5029, 58, 165, 4344, 16588 5030,"Dynatest " 5031 5032,"","","11,4","0" 5301,0,1,3,3, 0.051,1,1, ,2022,07,27,15,28 5302,0,1,8,0,0,0,0,0," " 5303,0,N0 , 31.7, 23.2 5041," " 5042," " 5043," " 5044," " 5301,0,1,3,3, 11.400,1,1, ,2022,07,27,14,03 5302,0,1,8,0,0,0,0,0," " 5303,0,N0 , 32.5, 25.3 1, 693, 336.0, 233.2, 177.2, 117.5, 85.8, 59.3, 50.4, 42.5, 35.6 2, 691, 318.9, 223.0, 170.4, 114.5, 84.5, 59.7, 50.7, 43.0, 35.9 5301,0,1,3,3, 11.201,1,1, ,2022,07,27,14,08 5302,0,1,8,0,0,0,0,0," " 5303,0,N0 , 33.8, 26.1 1, 691, 377.2, 268.2, 200.5, 132.2, 91.1, 49.8, 31.7, 21.6, 15.4 2, 693, 349.3, 249.8, 188.3, 126.3, 89.4, 51.0, 33.2, 22.9, 16.8 3, 693, 344.9, 247.3, 186.5, 125.5, 89.2, 51.0, 33.3, 22.9, 16.9 5301,0,1,3,3, 11.000,1,1, ,2022,07,27,14,09 5302,0,1,8,0,0,0,0,0," " 5303,0,N0 , 31.7, 26.4 1, 681, 431.2, 336.2, 277.4, 206.4, 155.6, 96.0, 68.1, 51.3, 39.4 2, 686, 409.8, 320.6, 266.5, 200.0, 153.4, 97.5, 70.3, 53.3, 41.7
说明:示例里第一个5303行后没有节拍记录,第二个和第四个5303行后只有2条,都需要补到3条。
求帮忙写一段Python代码,实现:
- 找到文件里所有的5303行
- 检查该行后面的节拍记录数量(数有多少条以
1,、2,、3,开头的连续行) - 不足3条的话,复制最后一条存在的节拍记录,把开头的数字改成下一个序号,直到凑够3条
- 处理完后保存成新文件(最好提醒先备份原文件)
内容的提问来源于stack exchange,提问作者Helga F.
相关产品推荐
相关产品推荐

