【问题标题】:How to delete the first X and the last X rows in a csv file?如何删除 csv 文件中的前 X 行和最后 X 行?
【发布时间】:2017-07-21 12:15:01
【问题描述】:

我想使用 Pyton 2.7 删除 csv 文件中的最后 16 行和前 16 行。

我的代码有什么问题?为什么不删除这些行?

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()

抱歉,这似乎是一个非常简单的问题,但我是 python 新手,非常感谢您在这方面的任何帮助,谢谢!!

【问题讨论】:

  • 这看起来像是解决非常简单的问题的一种过于复杂的方法。 air.txt 包含什么内容以及您的最终目标是什么?
  • 这里你可以看到,air.txt stackoverflow.com/questions/45231230/…987654321@

标签: python csv text


【解决方案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)

【讨论】:

    【解决方案2】:

    一个简单的方法是使用 pandas。将 .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 保存回文件:

    df.to_csv('output_out.csv')
    

    【讨论】:

    • 我收到一条很长的错误消息,我只能在“阅读”模式下打开 csv 文件
    • 听起来很奇怪,您可以检查选项以使用 pandas here读取 csv 文件
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2014-03-22
    • 2017-09-09
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多