繁体   English   中英

如何在 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!")

对不起,如果这设置不好,我对此有点陌生。 在此先感谢您的帮助

在我发布答案之前,让我花时间解释一下你做错了什么,这样你就不会重复同样的坏习惯。

这行可以写得更好:

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

Python它可以写成:

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

在您的代码示例中,您从未使用过with 现在是阅读为什么应该使用它的好时机。

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

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()

尝试这个:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM