从csv文件中的标题中删除n行

时间:2016-10-04 04:10:07

标签: python-2.7 csv skip

感谢您花时间阅读它。

我喜欢python,因为它更简单,更快,但今天我遇到问题“frezze”。

我有一个这样的文件(标题会有变化,它不是常数):

2014 10 1 0608 36.3 L -17.381 -67.477 15.0F OSC 1939.1 4.3LOSC 5.4WOSC 1  
SPEC LPAZBH Z MO 17.7 ST  1.8 OM 6.26 f00.138 R 10.48 AL 1.50 WI 14.6 MW  5.7 3  
SPEC LPAZBH Z T 6 852 K 0.000 GD  140 VS 3.90 DE 2.90 Q0  0.0 QA 0.00 VS 3.90 3  
SPEC BB05HH N MO  0.0 ST0.000 OM 13.8 f0 15.2 R0.0778 AL 2.47 WI  9.4 MW  0.0 3  
SPEC BB05HH N T 6 846 K 0.000 GD    0 VS 3.20 DE 2.60 Q0  0.0 QA 0.00 VS 3.20 3  
SPEC BBOJSH Z MO 17.7 ST0.027 OM 5.76 f00.058 R 43.15 AL 2.94 WI 34.3 MW  5.7 3  
SPEC BBOJSH Z T 6 827 K 0.000 GD   89 VP 6.80 DE 2.90 Q0  0.0 QA 0.00 VS 3.90 3  
SPEC BBOBSH Z MO  0.0 ST0.000 OM 4.09 f0 1.56 R0.7576 AL 1.53 WI356.7 MW  0.0 3  
SPEC BBOBSH Z T 6 821 K 0.000 GD    0 VP 5.80 DE 2.60 Q0  0.0 QA 0.00 VS 3.20 3  
SPEC AVERAGE  MO 17.2 ST 92.7 OM  5.7 f00.224 R9.0633 AL 0.00 WI 20.0 MW  5.4 3  
SPEC SD       MO  7.4 ST 91.0 OM  2.6 f00.231 R5.5382 AL      WI      MW  2.4 3  
GAP= 89       71.49     160.1   254.8  0.0  0.1224E+05  0.0000E+00  0.0000E+00E  
SPEC BBOESH Z MO 17.5 ST0.834 OM  6.4 f00.116 R 11.51 AL-0.00 WI 20.0 MW  5.6 3  
SPEC BBOESH Z T 6 836 K 0.020 GD 84.1 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC BBOJSH Z MO 17.8 ST0.855 OM  6.7 f00.091 R 14.68 AL-0.00 WI 20.0 MW  5.8 3  
SPEC BBOJSH Z T 6 844 K 0.020 GD 89.6 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC LPAZSH Z MO 16.0 ST 11.4 OM  4.7 f00.860 R1.5531 AL-0.00 WI 20.0 MW  4.6 3 
SPEC LPAZSH Z T 6 846 K 0.020 GD  140 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC BBODSH Z MO 18.0 ST  1.4 OM  6.7 f00.091 R 14.68 AL-0.00 WI 20.0 MW  5.9 3  
SPEC BBODSH Z T 6 857 K 0.020 GD  145 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC BBOBSH Z MO 17.1 ST  4.6 OM  5.8 f00.266 R5.0214 AL-0.00 WI 20.0 MW  5.4 3  
SPEC BBOBSH Z T 6 850 K 0.020 GD  154 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3 
SPECMNMCXBH Z MO 15.8 ST0.565 OM 4.10 f00.386 R3.7387 AL 2.64 WI 26.0 MW  4.5 3  
SPECMNMCXBH Z T 610 2 K 0.000 GD  296 VS 3.90 DE 2.90 Q0 0.0 QA 0.00 VS 3.90 3  
SPEC PB11BH Z MO 16.4 ST0.095 OM  4.7 f00.129 R 10.35 AL-0.00 WI 20.0 MW  4.9 3  
SPEC PB11BH Z T 61013 K 0.020 GD  350 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC PB08BH Z MO 16.0 ST0.074 OM  4.3 f00.161 R8.2963 AL-0.00 WI 20.0 MW  4.6 3  
SPEC PB08BH Z T 61026 K 0.020 GD  353 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3 
SPECPSGCXBH Z MO 15.6 ST  0.1 OM  4.2 f00.254 R  5.26 AL-0.00 WI 20.0 MW  4.3 3  
SPECPSGCXBH Z T 61013 K 0.020 GD192.6 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC PB01BH Z MO 15.9 ST0.083 OM  4.1 f00.179 R7.4620 AL-0.00 WI 20.0 MW  4.5 3  
SPEC PB01BH Z T 61040 K 0.020 GD  457 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC PB09BH Z MO 16.9 ST0.110 OM  5.0 f00.094 R 14.21 AL-0.00 WI 20.0 MW  5.2 3 
SPEC PB09BH Z T 61121 K 0.020 GD  523 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC PB06BH Z MO 16.0 ST0.115 OM  4.1 f00.179 R7.4620 AL-0.00 WI 20.0 MW  4.6 3  
SPEC PB06BH Z T 61118 K 0.020 GD  629 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3  
SPEC SIV SH Z MO 22.2 ST999.9 OM 10.2 f00.299 R4.4672 AL-0.00 WI 20.0 MW  8.7 3  
SPEC SIV SH Z T 61113 K 0.020 GD  700 VS 3.61 DE 2.78 Q0400.0 QA 0.70 VS 3.61 3
31.0       3.0     137.0  3.0 10.0  2.0  0.2  0.3               
FPFIT  F  
2014-10-01-0606-41S.NSN___070                         6  
OLDACT:UP  14-10-10 15:15 OP:yo   STATUS: ID:20141001060641     3  
OLDACT:ARG 14-10-10 14:56 OP:yo   STATUS: ID:20141001060641     3  
ACTION:UP  14-10-10 15:43 OP:yo   STATUS: ID:20141001060641     I  
OLDACT:UP  14-10-10 15:28 OP:yo   STATUS: ID:20141001060641     3  
STAT    SP  IPHASW  D   HRMM    SECON   CODA    AMPLIT  PERI    AZIMU   VELO    AIN AR  TRES    W   DIS CAZ7  
PB11    BZ  IP      D   6 9     31.76   62                                              -0.4810     350 221   
PB11    SZ  IAML        610     18.65           486.2   1.70                                        350 221   
PB08    BZ  IP      C   6 9     39.09   62      6.2310                                              353 210   
PB08    SZ  IAML        610     30.80            232.5  1.80                                        353 210   
PSGCX   BZ  IP      D   6 9     31.60   62      -3.9110                                             372 228   
PSGCX   SZ  IAML        610     55.47           317.5   2.50                                        372 228   
PB01    BZ  IP      D   6 9     46.54   62      -1.70           9                                   457 207   
PB01    SZ  IAML        611     7.26            160.1   3.10                                        457 207   
MOCB    SZ  IP      C   6 9     48.34   62      -2.06           9                                   470 156   
PB09    BZ  IP      C   610     9.79    62      11.72           9                                   523 200   
PB09    SZ  IAML        611     51.60           478.4   3.00                                        523 200   
YJA     EZ  IP      C   6 9     59.20   62      -5.99           9                                   569 159   
PB06    BZ  IP      D   610     8.40    62      -5.52           9                                   629 200

标题将一直到

STAT SP IPHASW D HRMM SECON CODA AMPLIT PERI AZIMU VELO AIN AR TRES W DIS CAZ7

此行之后数据现在存在,我的意思是

PB11 BZ IP D 6 9 31.76 62 -0.4810 350 221

是数据。

我有一些想法可以跳过此标题并保留数据

向Marcin致意(如何查找特定单词的哪一行。[python])我foud计算行直到单词“STAT SP”

with open(texto,'r') as f:
lines=f.readlines().split(\t)
word='STAT SP'
stat=[]
ain=[]
dista=[]
for i,line in enumerate(lines):
    if word in line: # or word in line.split() to search for full words
        leo2=csv.reader(line, delimiter=' ')
        for xx in leo2:
            dista.append(xx[0])

BUt id不起作用,它只是给出:

['', 'S', 'T', 'A', 'T', '', 'S', 'P', '', 'I', 'P', 'H', 'A', 'S', 'W', '', 'D', '', 'H', 'R', 'M', 'M', '', 'S', 'E', 'C', 'O', 'N', '', 'C', 'O', 'D', 'A', '', 'A', 'M', 'P', 'L', 'I', 'T', '', 'P', 'E', 'R', 'I', '', 'A', 'Z', 'I', 'M', 'U', '', 'V', 'E', 'L', 'O', '', 'A', 'I', 'N', '', 'A', 'R', '', 'T', 'R', 'E', 'S', '', 'W', '', '', 'D', 'I', 'S', '', 'C', 'A', 'Z', '7']

你能给我一些提示或修改代码来获取

STAT = [ 'PB11', 'PB09' ....] AIN = [ '62', '62' ...]

棘手的问题在于变量标题,有时候是3行,或者像这样的1或45。

非常感谢您的时间。

最好的问候。

Tonino

1 个答案:

答案 0 :(得分:0)

感谢您澄清标头的实际外观。你的数据结构仍然不是很清楚,但我会选择:

import re

data=[]
dataNotFound=True
with open("data_f.txt") as fpntr:
    for cnt,line in enumerate(fpntr):
        if dataNotFound: 
            #to not make regex waste time after data start is found 
            matchObj= re.search(r'DIS\sCAZ7',line)
            # \s: whitespace character as I am not sure about spaces and tabs
            if matchObj:
                print "match found in line {}".format(cnt)
                #surely you don't need this text, but it might be of interest how long your header is.
                data=data+[line.split('DIS CAZ7')[-1]]
                dataNotFound=False
        else:
            data=data+[line]
for line in data:
    print line

如果您可以澄清数据结构,我会更新/编辑/增强,但我想您可以自己调整列。

干杯