如何将列表保存到 Python 中的 CSV 文件

How do I save a list to a CSV in Python

我一直在尝试将我正在开发的冒险游戏的列表保存到 CSV 文件中,但我似乎找不到任何可以在线运行的内容,这是我的代码,

import csv
testarray = ["Hello", "My", "Name", "is", "John"]
wtr = csv.writer(open ('test.csv', 'w'), delimiter=';', lineterminator='\n')
for x in testarray : wtr.writerow ([x])
for label in testarray:
  testarray.write([label])
print("Done!")

抱歉,如果我的表述不当,我是新手。在此先感谢您的帮助

试试这个:

import csv

testarray = ["Hello", "My", "Name", "is", "John"]

with open('test.csv', 'w', newline='') as csvfile:
    writer= csv.writer(csvfile, delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(testarray)

这是来自页面:CSV File Reading and Writing

值得一读,以便您了解其工作原理。

我会使用 Pandas Dataframe 来构建数据框并将其保存为 CSV。如果您想要单独行中的列表中的元素,请执行此操作

import pandas as pd
df1 = pd.Dataframe(testarray)

如果您希望列表的所有元素都在一行中,请执行此操作

df1 = pd.DataFrame([testarray])

另存为

df1.to_csv("my_test.csv", index = False)

如果需要,您可以在数据框中添加列名。

如果您有如下列表:

list_of_list = [['A', 15], ['B', 30], 
       ['C', 45], ['D', 22]] 

您可以简单地执行以下相同操作,使用标记的列

df_again = pd.DataFrame(list_of_list, columns =['letter', 'number']) 
df_again.to_csv("new_one.csv", index = False)

在我 post 回答之前,让我花点时间解释一下你做错了什么,这样你就不会重蹈覆辙。

这行可以写得更好:

wtr = csv.writer(open ('test.csv', 'w'), delimiter=';', lineterminator='\n')

Python中可以写成:

with open('items.csv', 'w', newline='') as csvfile:

在您的代码示例中,您从未使用过 with。现在是阅读 why you should use it.

的好时机

在此之下,您可以指定写入方式和内容,如下所示:

item_writer = csv.writer(csvfile, delimiter=', quoting=csv.QUOTE_MINIMAL)

这个 for 循环可以写得更好:

for label in testarray:
  testarray.write([label])

您不需要用 [] 方括号将 label 变量括起来,因为它不是 list。您正在引用 list.

中的项目

可以这样写:

for item in testarray:
    item_writer.writerow(item)

这可能不是您想要的,因为它会将 list 中的每个项目都写在它自己的行上。

将所有内容放在一起,我们得到:

import csv


def main():

    testarray = ["Hello", "My", "Name", "is", "John"]

    with open('test.csv', mode='w') as employee_file:
        employee_writer = csv.writer(employee_file, delimiter=',',  quotechar='"', 
                                     quoting=csv.QUOTE_MINIMAL)
        employee_writer.writerow(testarray)

    print("done")

 # Will output:
 # Hello,My,Name,is,John

if __name__ == '__main__':
    main()