【问题标题】:Writing multiple class attributes into a single row in CSV将多个类属性写入 CSV 中的单行
【发布时间】:2018-02-11 17:49:33
【问题描述】:

我有一个名为 bookList

的书籍列表

在此列表中,有书籍

每本书都有很多属性,例如bookTitle、作者、数量和isbn

我的程序首先读取一个 csv 文件,该文件有 5 行,每一行都有逗号分隔的值,从 bookTitle 的名称开始一直到该行的末尾,即零售价。

读取文件没问题,但我的问题是在我的程序中你可以操作书的数据,比如改变书名。

如何有效地将所做的更改/添加的书籍/删除的书籍写回文件?

我试过了

with open('inventory.csv', 'w') as f:
        writer = csv.writer(f, lineterminator = '\n')
        for book in bookList:
            writer.writerow(book.bookTitle, book.isbn, book.author, book.publisher, book.dateAdded, book.quantity, book.retail, book.wholesale)

但是“writerow”只接受 1 个参数(给出了 8 个参数)

我如何在 csv 文件中每行写入多个内容,以逗号分隔,用于我的书的每个属性?

【问题讨论】:

  • 简单,只是附在一个列表中。 writer.writerow([book.bookTitle, book.isbn, book.author, book.publisher, book.dateAdded, book.quantity, book.retail, book.wholesale])

标签: python python-3.x csv


【解决方案1】:

根据documentaionwrite 方法将单行作为其输入参数。您需要做的就是将您的属性转换为list。 IE。

with open('inventory.csv', 'w') as f:
    writer = csv.writer(f, lineterminator = '\n')
    for book in bookList:
        writer.writerow([book.bookTitle, book.isbn, book.author,
                         book.publisher, book.dateAdded, book.quantity, 
                         book.retail, book.wholesale])

【讨论】:

  • 我可以发誓这让我的 csv 文件以前为空白,但它工作正常。如果是列表/元组有关系吗?
  • @DeathPox AFAIK 它只需要一个可以迭代的序列。试试看。
  • @DeathPox 我觉得 list 更自然,因为如果你阅读 CSV,就会得到这样的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
相关资源
最近更新 更多