【问题标题】:Extract rows and save to multiple csv files提取行并保存到多个 csv 文件
【发布时间】:2011-09-04 17:17:29
【问题描述】:

我正在尝试使用 Python 解决以下问题:我有一个表 (csv),我想从中连续提取第 1 + 2 行、第 1 + 3 行、第 1 + 4 行等。应再次保存为 csv 文件,并根据要提取的第 2 行中的第一个字符串命名(2、3、4、5、...)。现在我的问题 - python 是正确的工具吗?是否有可用的示例代码?

非常感谢任何帮助和提示!

克劳德 S.

+ 澄清:

感谢您的反馈 - 实际上我正在尝试使用 csv 模块打开并使用以下代码读取表格:

import csv
import sys

f = open(sys.argv[1], 'rt')
try:
    reader = csv.reader(f)
    for row in reader:
        print row

现在我不确定如何选择和编写所需的行......对于初学者的问题,我很抱歉。 克劳德 S.

【问题讨论】:

  • 您对其中的哪个具体部分有疑问?
  • documents 包含示例。如果您检查了 csv.reader 是否有效并且您想编写代码,请查看 csv.writer

标签: python csv split


【解决方案1】:
fname = argv[1]
with open(fname) as i:
    reader = csv.reader(i)

    first_row = next(reader)
    for cur_row in reader:
        out_name = cur_row[0]
        with open(out_name, 'wb') as o:
            writer = csv.writer(o)
            writer.writerow(first_row)
            writer.writerow(cur_row)

希望对你有帮助

【讨论】:

    【解决方案2】:

    我不相信您需要 csv 模块(除非第一列可以包含引号和逗号)。如果您的文件格式很简单,只需使用拆分即可。

    fname = argv[1]
    with open(fname) as f:
        header = f.readline()
        # parse the rest of the lines. 
        for line in f:
            out_name = line.split(',')[0]
            with open(out_name, 'wb') as o:
                o.write(header)
                o.write(line)
    

    【讨论】:

    • 非常感谢您的提示-确实不需要 csv 模块-在本地支持下,我得到了这个解决方案:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多