在这篇博客中,我们将看到如何使用python csv writer将列表数据写入csv中。
1.方法:Python写一个列表到CSV
在第一个方法中,我们将使用csv.writer()将一个列表写到CSV文件中。
import csv
Details = ['Name', 'class', 'Year', 'Subject','Grade']
rows = [ ['Susjan', '2nd', '2020', 'Physics','A'],
['John', '3rd', '2022', 'Chemistry','B'],
['Sam', '4th', '2021', 'Math','A']]
with open('studentData.csv', 'w') as f:
write = csv.writer(f)
write.writerow(Details)
write.writerows(rows)
输出
Name,class,Year,Subject,Grade
Susjan,2nd,2020,Physics,A
John,3rd,2022,Chemistry,B
Sam,4th,2021,Math,A
第1行:我们导入CSV模块。
第2行至第3行:我们创建了两个详细信息和行的列表。细节列表将表示各列的名称,行列表将表示每一列的数据。
第6行至第9行:我们打开一个文件studentData.csv作为写模式('w')来写文件。现在,我们使用csv.writer(f)创建了一个写对象。首先,我们使用细节列表来写csv的列名。在写完csv的列名后,我们使用write.writerows()并将rows列表作为参数传入其中,将每个列表写成一行。
2.2.方法:Python将一个列表写成CSV行
在这个方法中,我们将使用csv.writer()来写CSV行。程序中详细说明了如何使用这个方法来写入下面给出的csv行。
import csv
data = [['a'], ['b'], ['c'],['d']]
file = open('alphabet.csv', 'w+',newline ='')
with file:
write = csv.writer(file)
write.writerows(data)
輸出
a
b
c
d
第1行:我们导入CSV模块。
第2行:我们创建了一个数据列表,其中的元素也是一个列表。每个子列表将被视为一个单独的行。
第3行至第6行:我们以写模式('w')打开alphabet.csv文件,来写这个文件。我们还使用了换行属性,这有助于将数值写入新行。现在,我们创建了一个对象,使用csv.writer(file)进行写入。为了把每个列表写成一行,我们使用write.writerows(),并把数据列表作为参数传给它们。
从输出结果中,我们可以看到所有子列表都被写成了新的一行。
3.方法:Python写列表到CSV头
在这个方法中,我们要写CSV文件的头。
import csv
list = [[ 'New York', 'USA','A'],['Toronto', 'CANADA', 'A'],['Bejing','CHINA','B']]
with open('header.csv','w') as f:
writer = csv.writer(f)
writer.writerow(['City', 'Country', 'Rank'])
writer.writerows(list)
输出
City,Country,Rank
第1行:我们导入CSV模块。
第2到3行:我们创建了一个数据列表,其中的元素也是一个列表。每个子列表将被视为一个单独的行。
第4行到第7行:我们打开一个文件rank.csv,作为写模式('w')来写这个文件。现在,我们使用csv.writer(f)创建了一个对象来写入。首先,我们使用 writerow (['City', 'Country', 'Rank'])写入csv的各列名称。
输出显示我们已经成功地写入了csv文件的标题。
4.方法:Python写一个列表元组元素到csv中
这个方法将展示我们如何将一个列表里面的元素元组类型写到csv中。
import csv
items = [(('A', 'Sam'), 25), (('B', 'Rakesh'), 23), (('C', 'Kaira'), 42)]
with open('tuple.csv', 'w') as f:
write = csv.writer(f)
write.writerows(items)
输出
"('A', 'Sam')",25
"('B', 'Rakesh')",23
"('C', 'Kaira')",42
第1行:我们导入CSV模块。
第2行:我们创建了一个项目列表,列表中的每个元素都是一个元组类型。
第3行至第5行:我们以写模式('w')打开一个文件tuple.csv来写这个文件。现在,我们创建了一个使用csv.writer(f)的对象来写。为了把每个列表元素(元组)写成一行,我们使用write.writerows()并把项目列表作为参数传给它们。
5.5.方法:Python 将一个列表追加到一个 csv 中
这个方法将展示我们如何使用python writer将任何新数据追加到csv中。
import csv
with open('result.csv','a') as f:
writer = csv.writer(f)
writer.writerow(['city','New York'])
输出
"('A', 'Sam')",25
"('B', 'Rakesh')",23
"('C', 'Kaira')",42
city,New York
第1行:我们导入CSV模块。
第2行:我们在追加模式下打开result.csv文件,因为我们想在现有的csv文件中增加一些数据。
第3行至第4行:现在,我们使用csv.writer(f)创建了一个对象来写入。为了把每个列表元素写成一行,我们使用write.writerows(),并把项目列表作为参数传给他们。但由于现在我们只有一个列表,我们将只使用**writerow()**方法。
从输出结果中,我们可以看到,我们成功地将新的数据追加到一个现有的csv文件。
6.方法:Python 将一个列表追加到一个 csv 中
import csv
from itertools import zip_longest
item_1 = ['A', 'B', 'C', 'D']
item_2 = [1,2,3,4]
data = [item_1, item_2]
export_data = zip_longest(*data, fillvalue = '')
with open('item_zip.csv', 'w', encoding="ISO-8859-1", newline='') as file:
write = csv.writer(file)
write.writerow(("item_1", "item_2"))
write.writerows(export_data)
输出
item_1,item_2
A,1
B,2
C,3
D,4
第1行和第2行:我们导入CSV模块和zip_longest。这个模块用于按顺序进行迭代。
第3行至第5行:我们创建了两个列表 item_1 和 item_2,用于数据迭代。然后我们将两个列表合并为一个列表,并将该列表命名为data。
第6行:然后我们调用zip_longest方法,对两个列表进行并行迭代。
第7行到第10行:我们打开一个文件item_zip.csv,作为写模式('w')来写这个文件。现在,我们创建了一个使用csv.writer(f)的对象来写。首先,我们写出了csv的列名,写完后,为了把每个列表写成一行,我们使用write.writerows()并把行列表(export_data)作为参数传入其中。
输出结果显示,我们已经成功地将我们的压缩数据写入csv文件。
7.7.方法:用自定义管状分隔符写CSV文件
在这个方法中,我们将使用管状分隔符('|')而不是逗号。下面的程序将解释我们如何在代码中使用管状分隔符。
import csv
Details = ['Name', 'class', 'Year', 'Subject','Grade']
rows = [ ['Susjan', '2nd', '2020', 'Physics','A'],
['John', '3rd', '2022', 'Chemistry','B'],
['Sam', '4th', '2021', 'Math','A']]
with open('pipe_delimiter.csv', 'w') as f:
write = csv.writer(f,delimiter='|')
write.writerow(Details)
write.writerows(rows)
输出
Name|class|Year|Subject|Grade
Susjan|2nd|2020|Physics|A
John|3rd|2022|Chemistry|B
Sam|4th|2021|Math|A
第1行:我们导入CSV模块。
第2行至第3行:我们创建了两个细节和行的列表。细节列表将表示各列的名称,行列表将表示每一列的数据。
第6行至第9行:我们打开一个文件studentData.csv,以写模式('w')来写文件。现在,我们创建了一个使用csv.writer(f)的对象来写入。我们还在csv.writer()方法中与f一起添加了一个额外的属性分隔符。首先,我们使用细节列表写出csv的列名。写完后,我们使用write.writerows(),并将rows列表作为参数传给他,将每个列表写成一行。
输出结果显示,我们的csv文件数据是用管道分隔符而不是逗号分隔的。
8.方法:用自定义引号字符写CSV文件
在这个方法中,我们将使用一些自定义的引号字符,同时将数据保存为csv格式。为此,我们必须使用quoting=csv.QUOTE_NONNUMERIC属性和quotechar,如下面的程序所示。
import csv
Details = ['Name', 'class', 'Year', 'Subject','Grade']
rows = [ ['Susjan', '2nd', '2020', 'Physics','A'],
['John', '3rd', '2022', 'Chemistry','B'],
['Sam', '4th', '2021', 'Math','A']]
with open('quote.csv', 'w') as f:
write = csv.writer(f,quoting=csv.QUOTE_NONNUMERIC,
delimiter=';', quotechar='*')
write.writerow(Details)
write.writerows(rows)
輸出
*Name*;*class*;*Year*;*Subject*;*Grade*
*Susjan*;*2nd*;*2020*;*Physics*;*A*
*John*;*3rd*;*2022*;*Chemistry*;*B*
*Sam*;*4th*;*2021*;*Math*;*A*
第1行:我们导入CSV模块。
第2行至第3行:我们创建了两个细节和行的列表。细节列表将表示各列的名称,行列表将表示每一列的数据。
第6行至第9行:我们打开一个文件studentData.csv,以写模式('w')来写文件。现在,我们创建了一个使用csv.writer(f)的对象来写入。我们还在csv.writer()方法中与f一起添加了一个额外的属性quoting和quotechar。首先,我们使用细节列表来写csv的列名。写完后,我们使用write.writerows(),并将rows列表作为参数传给他,将每个列表写成一行。
输出结果显示,我们的csv文件数据现在是用自定义的quotechar引号。
9.9.方法:使用csv.DictWriter()写CSV文件
我们也可以使用DictWriter()方法写入csv文件。所以在这个程序中,我们将看到如何使用DictWriter()方法来写csv文件。
import csv
with open('dictwriter.csv', 'w', newline='') as file:
fieldnames = ['A', 'B']
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'A': 'Magnus Carlsen', 'B': 28770})
writer.writerow({'A': 'Fabiano Caruana', 'B': 28222})
writer.writerow({'A': 'Ding Liren', 'B': 28001})
输出
A,B
Magnus Carlsen,28770
Fabiano Caruana,28222
Ding Liren,28001
第1行:我们导入csv模块。
第3行:我们在写模式下打开文件dictwriter.csv。
第4行和第5行:在这个dictwriter()方法中,我们必须定义列表中的键,并在创建writer对象时传递,如第5行所示。字段名的顺序与我们要写入csv文件的顺序相同。
第8至10行:我们以dict(键和值)的形式将所有的数据传递给writerow。
总结
在这篇文章中,我们已经看到了使用csv.writerow()方法的不同方式。我们看到了如何将整个列表写到csv中。我们还看到了如何将列表中的图元写到csv中。然后我们看到了一些有趣的方法,比如自定义csv的分隔符。