python列表到csv文件,每个项目都在新行中

Posted

技术标签:

【中文标题】python列表到csv文件,每个项目都在新行中【英文标题】:python list to csv file with each item in new line 【发布时间】:2018-12-08 14:04:36 【问题描述】:

我正在尝试编写一个函数,该函数接收字符串列表并将列表中的每个字符串作为单独的行写入 csv 文件,但我没有得到任何输出。你能帮我理解我做错了什么吗?这是我的代码:

 import sys 
 import os
 import csv

 list= ['name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com']

 def write_to_csv(list_of_emails):
     with open('emails.csv', 'w', newline='') as csvfile:
         writer = csv.writer(csvfile, delimiter = ',')
         writer.writerows(list_of_emails)

write_to_csv(list)  

【问题讨论】:

【参考方案1】:

您为什么不尝试使用pandas 来代替。这非常容易。 :)

lst = ['name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com']

首先,导入包

import pandas

然后,创建数据框

df = pandas.DataFrame(data="email": lst)

然后,导出到 csv :)

df.to_csv("./mycsv.csv", sep=',',index=False)

完成 :) 让我知道这个是否适合您!

【讨论】:

【参考方案2】:

如果您只是将每个字符串写在单独的行上,您可以保持简单,只需使用\n 编写每个项目:

lst= ['name1@domain.com', 'name2@domain.com', 'name3@domain.com']

def write_to_csv(list_of_emails):
    with open('emails.csv', 'w') as csvfile:
        for domain in list_of_emails:
            csvfile.write(domain + '\n')

write_to_csv(lst)

哪些输出:

name1@domain.com
name2@domain.com
name3@domain.com

您也不应该使用list 作为变量名,因为它会影响内置函数list

【讨论】:

【参考方案3】:

您可以按如下方式更改代码:

import sys 
import os
import csv

listOfLines= [['name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com']]

def write_to_csv(list_of_emails):
   with open('emails.csv', 'w', newline='') as csvfile:
       writer = csv.writer(csvfile, delimiter = ',')
       writer.writerows(list_of_emails)

write_to_csv(listOfLines)

函数writer.writerows() 接受一个列表列表,在我们的例子中 [['name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com']], 其中原始列表中的每个子列表都被视为 CSV 文件的单行。 您也不应该使用保留关键字,如 list 变量名。 list,dict 是分别用于创建列表和字典的函数。可能在您的代码中它没有抛出任何错误,但是对于比当前有问题的代码块更大的脚本,解释器会抛出相同的错误,并且此类错误变得更难调试

【讨论】:

【参考方案4】:

您需要使用writerow

例如:

import sys 
import os
import csv

l= ['name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com', 'name@domain.com']

def write_to_csv(list_of_emails):
    with open('emails.csv', 'w', newline='') as csvfile:
        writer = csv.writer(csvfile, delimiter = '\n')
        writer.writerow(list_of_emails)

write_to_csv(l)  

【讨论】:

【参考方案5】:

您可以将delimiter='\n'csv.writer.writerow 一起使用(注意,不是 writerows)。此外,newline='' 不需要作为 open 的参数。

import sys 
import os
import csv

L = ['name1@domain.com', 'name2@domain.com', 'name3@domain.com']

def write_to_csv(list_of_emails):
    with open('emails.csv', 'w') as csvfile:
        writer = csv.writer(csvfile, delimiter='\n')
        writer.writerow(list_of_emails)

write_to_csv(L)

【讨论】:

以上是关于python列表到csv文件,每个项目都在新行中的主要内容,如果未能解决你的问题,请参考以下文章

Python - 将 For Loop 项目作为新行写入 CSV

如何使用带有新行的python将列表保存为.csv文件?

Python JSON转储/附加到.txt,每个变量都在新行

Python,转置列表并写入 CSV 文件

在python的csv文件中添加新行输出

如何将列表列表写入 CSV 文件 Python?