【问题标题】:Optimize writing multiple CSV files from lists in Python优化从 Python 列表中写入多个 CSV 文件
【发布时间】:2017-06-02 04:52:03
【问题描述】:

我想使用 csv 模块为每个列表创建一个 CSV。我的代码有效,但一次又一次地写相同的行感觉有点傻。我想知道是否有更好、更有效的方式来编写这部分代码。

我的电子表格共有 3 张工作表。 row1 将 sheet1 数据放在列表中,row2 将 sheet2 数据放在列表中,依此类推。

  with open("sheet1.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(rows1)

  with open("sheet2.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(rows2)

  with open("sheet3.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(rows3)

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: python python-2.7 csv optimization


    【解决方案1】:

    例如迭代一个元组列表。

    for f,rows in [("sheet1.csv",rows1),("sheet2.csv",rows2),("sheet3.csv",rows3)]:
        with open(f, "wb") as f:
            writer = csv.writer(f)
            writer.writerows(rows)
    

    请注意,将您的 rowsX 变量放在行列表中并使用 enumerateformat 生成工作表名称(如果它们与您描述的一样)或在两个列表中使用 zip 会更简单,如果名字不容易生成。

    row_list = [rows1,rows2,rows3]
    name_list = ["apple.csv","banana.csv","orange.csv"]
    for name,rows in zip(name_list,row_list):
        with open("sheet{}.csv".format(i), "wb") as f:
            writer = csv.writer(f)
            writer.writerows(rows)
    

    另请注意:with open(f, "wb") as f: 仅适用于 python 2 csv writer。

    对于 python 3,执行:with open(f, "w", newline="") as f:

    【讨论】:

    • 哇,谢谢!这绝对看起来更干净。如果每张纸都有不同的名称,您将如何使用第二种方法?因此,它们不是 sheet1.csv、sheet2.csv 和 sheet3.csv,而是 apple.csv、banana.csv 和草莓.csv。
    猜你喜欢
    • 2023-03-15
    • 2021-03-15
    • 1970-01-01
    • 2018-04-02
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多