在Python中将列表保存为csv文件

2024-06-28 15:08:37 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我当前的CSV文件:

BookId,BookTitle,Author ,Price(£),Subject,NoofCopies
1,Sherlock Holmes, Arthur Conan Doyle, 10.00, Crime, 3
2,The Computing Book, Robert, 2.00, Computing, 9
3,Another Book,Steeve, 4.50, Action, 1

如果我使用此代码读取csv文件:

def readbookcsv():
    database = []
    filename = "csvbooks.csv"
    with open(filename, 'r') as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                    database.append(row)
    return database

我得到了一个包含其他列表的列表,我在代码的其余部分使用这些列表来添加或更改这些列表中的数据:

"['BookId', 'BookTitle', 'Author ', 'Price(£)', 'Subject', 'NoofCopies']","['1', 'Sherlock Holmes', ' Arthur Conan Doyle', ' 10.00', ' Crime', ' 3']","['2', 'The Computing Book', ' Robert', ' 2.00', ' Computing', ' 9']","['3', 'Another Book', 'Steeve', ' 4.50', ' Action', ' 1']"

然而,当试图覆盖保存文件时,我总是将文件全部清除,将上面的列表附加到单个单元格,或仅用列表覆盖csv,有没有办法将此列表更改回csv文件的格式,然后保存它

正在保存:

 with open('csvbooks.csv', 'wt') as f:
    wtr = csv.writer(f)
    wtr.writerow(booklist)

with open('csvbooks.csv', 'at') as f:
    writer = csv.writer(f, lineterminator = '\n')
    writer.writerow(booklist)

Tags: 文件csv列表aswithopendatabasereader
2条回答

要将列表列表(实际行)转换为csv格式,可以使用以下函数:

def listToRow(list, separator = ','):
row = ''
for item in list:
    row += item + separator
row = row[:len(row)-1]
return row  

def listToString(list):
    str = ''
    for item in list:
        str += listToRow(item) + '\n'
    return str

listToRow方法将“row list”作为参数,连接列表项并在它们之间添加分隔符(第二个参数)。默认情况下,我只是使用','就像你的例子

listToString方法将列表列表作为一个参数,将它们串联起来并添加换行符('\n'),这样每一行都会有一个额外的行

最后,您可以使用以下函数将字符串附加到实际的csv文件中

def appendStringToCSV(csvName = 'csv.csv', string = ''):
    f = open(csvName, 'a')
    f.write(string)
    f.close()

不能将整个列表提供给writerow()方法。 使用writerows()方法编写整个列表 立刻:

with open('csvbooks_out.csv', 'wt') as f:
    wtr = csv.writer(f)
    wtr.writerows(booklist)

或者,您可以逐行写入:

with open('csvbooks_out.csv', 'wt') as f:
    wtr = csv.writer(f)
    for row in booklist:
        wtr.writerow(row)

现在csvbooks_out.csv的格式与您的输入文件相同

相关问题 更多 >