2017-08-08 71 views
0

的第一線操作我有一個CSV文件,它看起來像以下:的Python跳過文件

CCC;reserved;reserved;pIndex;wedgeWT;NA;NA;NA;NA;NA;xOffset;yOffset;zOffset 
0.10089,0,0,1,0,0,0,0,0,0,-1.8,-0.7,1999998 
0.1124,0,0,3,0,0,0,0,0,0,-1.2,1.8,-3.9 

我使用fileinput方法來做文件中的某些操作,但我想在忽略操作第一個(標題)行,但仍然保持在那裏。我曾嘗試使用next(f)f.isfirstline(),但他們刪除標題行。我想保持標題行不動,儘管沒有對它做任何操作。

with fileinput.input(inplace=True) as f: 
    #skip line 
    for line in f: 
    . 
    . 
+0

你可以分享預期的輸出和你在'for'循環中做什麼(如果縮短了就沒問題,只是看看你基本上做了什麼)?請看看[mcve]。這包括一些提示,讓您的問題真正能夠回答。 – MSeifert

回答

0

您可以使用enumerate輕鬆地保持行號的軌道:

for linenum, line in enumerate(f): 
    if linenum == 0: 
     # 'line' is the header line 
     continue 

    # 'line' is a data line 
    # ... 
+0

我嘗試使用'枚舉',但它仍然刪除標題行。 [這裏](https://github.com/AnanDvd/MPI-Pigino/blob/master/csv_edit_Mareike_yesHeader_linenum.py)是我的腳本 –

+0

爲什麼你在使用'inplace = True',如果你不知道你必須寫輸出迴文件? –

0

您可以使用iternext跳過它:

with fileinput.input(inplace=True) as f: 
    iterF = iter(f) 
    print next(iterF)#skipping computation but printing data 
    for line in iterF: 
     #... 

這樣你只會得到一次創建迭代器的開銷,但不會創建索引,也不會在@Jonatho中計算每個迭代循環中的if nReinhart解決方案(這也是有效的)。

+0

我嘗試過使用'iter'和'next',但它仍然刪除標題行。 [這裏](https://github.com/AnanDvd/MPI-Pigino/blob/master/csv_edit_Mareike_yesHeader.py)是我的腳本 –

+0

@Andandwivedi,你想用標題中的信息做什麼,打印出來? – Netwave