【问题标题】:Split CSV file after specified row Python在指定行 Python 之后拆分 CSV 文件
【发布时间】:2017-06-03 20:20:25
【问题描述】:

我正在尝试拆分包含 201 行的 CSV 文件。前 136 行包含与其余 65 行不同的信息。无论如何我可以在 136 行之后拆分 CSV 文件吗?

到目前为止,我发现的解决方案均分文件。我也将其视为一种可能的解决方案:https://gist.github.com/jrivero/1085501

【问题讨论】:

  • 将它们读入,然后取两片rows[:136]rows[136:]

标签: python csv split


【解决方案1】:

您可以在文件对象上使用两个csv.reader 对象。 切片使用itertools.islice将第一个读取器对象分割到指定的行数,然后使用第二个读取器读取其余行。

如果两个部分通过say分隔符不同,两个csv.reader对象可以轻松处理:

import csv
from itertools import islice

with open('your_file_name.csv') as f:
    first_rows = list(islice(csv.reader(f), None, 136))
    last_rows = list(csv.reader(f, delimiter=';')) # use a different delim or quote char

【讨论】:

  • 感谢您的解决方案!如果我使用 pandas 及其读取 csv 函数,方法是否相同?
  • @wolverinejohn 可以直接对文件迭代器进行切片,并将切片传给pandas的csv读取函数。
【解决方案2】:

如果您知道需要跳过的行数,可以使用csvreader.line_num 来了解您正在阅读的行数,您可以在此处找到更多信息:https://docs.python.org/2/library/csv.html#reader-objects

【讨论】: