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