2017-07-21 192 views
-1

我想使用Pyton 2.7刪除csv文件中的最後16行和前16行。如何刪除csv文件中的第一個X和最後一個X行?

我在我的代碼中錯了什麼?爲什麼不刪除這些行?

import urllib2 
import unicodecsv as csv 
import os 
import sys 
import io 
import time 
import datetime 
import pandas as pd 
from bs4 import BeautifulSoup 
import sys 
import re 

def to_2d(l,n): 
    return [l[i:i+n] for i in range(0, len(l), n)] 

f = open('air.txt', 'r') 
x = f.readlines() 

filename=r'output.csv' 

resultcsv=open(filename,"wb") 
output=csv.writer(resultcsv, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1') 

maindatatable = to_2d(x, 4) 
print maindatatable 
output.writerows(maindatatable) 

with open('output.csv', 'rb') as csvfile: 
    lines = csvfile.readlines() 
    lines = lines[16:-16] 
    cWriter = csv.writer(csvfile, delimiter=',') 
    for line in lines: 
     cWriter.writerow(line) 
resultcsv.close() 

很抱歉,如果這似乎是一個很簡單的問題,但我是新來的蟒蛇,並在這方面的任何幫助將不勝感激,謝謝!

+0

這看起來像一種超複雜的方法t o解決非常簡單的事情。 「air.txt」包含什麼內容?您的最終目標是什麼? – zwer

+0

在這裏你可以看到,air.txt中有哪些cointains https://stackoverflow.com/questions/45231230/separate-the-txt-file-contents-to-multiple-cells-in-csv-file/45231512# 45231512 – tardos93

回答

1

我相信這個問題是這一行:

cWriter = csv.writer(csvfile, delimiter=',') 

的文件已經在讀模式打開。你不能在這個文件上初始化一個csv編寫器(它不能寫入)。

要解決,您可以聲明另一個with塊並設置另一個上下文管理器。

with open('output.csv', 'rb') as csvfile: 
    lines = csvfile.readlines() 
    cReader = csv.reader(csvfile) 
    lines = cReader.readlines()[16:-16] 

with open('output.csv', 'wb') as csvfile: 
    cWriter = csv.writer(csvfile) 
    cWriter.writerows(lines) 
0

一個簡單的方法是使用熊貓。閱讀.csv文件到一個數據幀:

df = pd.read_csv('output.csv') 

然後取出前16行:

df.drop(df.head(16).index, inplace=True) 

最後16行:

df.drop(df.tail(16).index, inplace=True) 

然後保存.csv回file:

df.to_csv('output_out.csv') 
+0

我得到一個很長的錯誤信息,我可以打開csv文件只有「閱讀」模式 – tardos93

+0

聽起來很奇怪,你可以選擇閱讀csv文件與熊貓[這裏](https://pandas.pydata.org/大熊貓-文檔/穩定/生成/ pandas.read_csv.html) –

相關問題