【问题标题】:Is there a python function that will allow me to take a master CSV file and split it out into rows of 100?是否有一个 python 函数可以让我获取一个主 CSV 文件并将其拆分为 100 行?
【发布时间】:2019-11-04 18:40:13
【问题描述】:

我有一个包含 3,600 行的主 CSV 文件。我想一次遍历文件 100 行,并将它们保存到自己的 CSV 文件中,总共 36 个 CSV 文件。

预期结果:

CSV 1 - 第 1-100 行

CSV 2 - 第 101-201 行

等等

我尝试过使用一些开放的代码行,并得到了一个半自动的解决方案,但我不得不重命名文件并增加行数。

from itertools import islice
import csv
with open("MKT1902 - MYLD Master Data.csv", "r") as myfile:
    head = list(islice(myfile, 101))

with open("MYLD July Data - 1.csv", "w") as f2:
    for item in head:
        f2.write(item)
AcctNo  MotCode Full Name   Addr1   City    ST  Zip Salutation
CON-123 10005876    Mr. Tom Smith   123 E Main St   Orlando FL  12345   Mr. Smith
CON-124 10005876    Ms. Jane Doe    124 E Main St   Orlando FL  12345   Ms. Doe
CON-125 10005876    Mr. Jeremy Grady    125 E Main St   Orlando FL  12345   Mr. Grady
CON-126 10005876    Ms. Sara Rogers 126 E Main St   Orlando FL  12345   Ms. Rogers
CON-127 10005876    Mrs. Terra Miller   127 E Main St   Orlando FL  12345   Mrs. Miller
CON-128 10005876    Mr. Jack Schultz    128 E Main St   Orlando FL  12345   Mr. Schultz
CON-129 10005876    Mr. Bryan Saturno   129 E Main St   Orlando FL  12345   Mr. Saturno
CON-130 10005876    Mr. Will Francis    130 E Main St   Orlando FL  12345   Mr. Francis
CON-131 10005876    Ms. Amy Lynn    131 E Main St   Orlando FL  12345   Ms. Lynn

【问题讨论】:

  • 欢迎来到 SO!您能否发布文件实际外观的小样本?比如说,10 行分成 3 行(以及如何处理悬空行的说明)。谢谢。
  • 谢谢,非常感谢!当我进一步考虑时,我希望所有 36 个文件都有标题行。我在想最好编写一个函数,该函数最初使用标题行创建所有文件,然后是第二个函数,将 100 行附加到每个文件。我已经编辑了上面 10 行的主帖子。
  • 谢谢。您可以将数据作为文本放入帖子中吗?手动输入所有内容有点麻烦,而且对使用屏幕阅读器的人不友好。
  • 我试图修复它,但不确定在 SO 上发布数据表的最佳方式。

标签: python-3.x export-to-csv


【解决方案1】:

如果您使用的是 Linux,并且您的 .csv 文件中没有跨行记录,则可以使用 split 命令为您完成。

Unix/Linux 有许多工具可用于处理文本文件,例如 CSV 文件。

这是一个例子:

这是我的master.csv 文件:

$ ls -l
total 280
-rw-rw-r-- 1 andy andy 286576 Jun 21 20:17 master.csv

13,449 行

$ wc -l master.csv
13445 master.csv

我将使用一些参数调用split 来指定我希望将其拆分。

$ split --lines=100 --numeric-suffixes --suffix-length=3 master.csv part

现在我有 135 个以 part 开头的文件。

$ ls
master.csv  part016  part033  part050  part067  part084  part101  part118
part000     part017  part034  part051  part068  part085  part102  part119
part001     part018  part035  part052  part069  part086  part103  part120
part002     part019  part036  part053  part070  part087  part104  part121
part003     part020  part037  part054  part071  part088  part105  part122
part004     part021  part038  part055  part072  part089  part106  part123
part005     part022  part039  part056  part073  part090  part107  part124
part006     part023  part040  part057  part074  part091  part108  part125
part007     part024  part041  part058  part075  part092  part109  part126
part008     part025  part042  part059  part076  part093  part110  part127
part009     part026  part043  part060  part077  part094  part111  part128
part010     part027  part044  part061  part078  part095  part112  part129
part011     part028  part045  part062  part079  part096  part113  part130
part012     part029  part046  part063  part080  part097  part114  part131
part013     part030  part047  part064  part081  part098  part115  part132
part014     part031  part048  part065  part082  part099  part116  part133
part015     part032  part049  part066  part083  part100  part117  part134

每个零件文件有 100 行长。以下是前十名:

$ wc -l part00*
  100 part000
  100 part001
  100 part002
  100 part003
  100 part004
  100 part005
  100 part006
  100 part007
  100 part008
  100 part009
 1000 total

最后 5 个

$ wc -l part13*
 100 part130
 100 part131
 100 part132
 100 part133
  45 part134
 445 total

当然,part134 文件只有 45 行。

这种方法的一个缺点是您不会在每个部分文件的顶部重复文件的第一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多