【每天一个小知识】
将字典中的内容写入CSV文件
Python字典简介
定义:
字典是一种可变容器模型,能够存储任意类型的对象 。
字典中的内容由键值对(key:value)组成,一般写在{}中. 我们可以定义字典如下:
d={‘Tom’:23,’Bob’:25}性质:
字典中的key一般都是唯一的,如果同一个key被赋值两次,则后一个值会被记住。
而且key的数据类型不可变,如字符串、数字、元组。
value可以取任意数据类型。操作:
(1)访问字典中的值
> In[1]: d['Tom']
>Out[1]: 23
(2)修改字典
#向字典中增加新内容
d['Amy']='yong'
#删除字典中的某个元素
del d['Tom']
#清空字典中的元素
d.clear()
- 将字典中的内容写入CSV文件
(1)方法一
d={'Tom':23,'Bob':25}
with open('D:\\dic.csv','w') as _f:
for k,v in d.items():
_f.write("{},{}\n".format(k,v))
输出结果为:
(2)方法二
import csv
d={'Tom':23,'Bob':25}
with open('D:\\dic.csv','w') as _f:
writer=csv.writer(_f)
for k,v in d.items():
writer.writerow([k,v])
输出结果为:
Note:
我们可以看到,使用这种方法会在输出的各行内容之间产生空行。
这是因为open()函数的参数中newline=None时,输入的行不管是以’\n’,’\r’还是’\r\n’结尾,都会在返回之前转换成’\n’。
将文件内容读取出来之后,我们发现,字符串样式为 ‘Tom,23\n\nBob,25\n\n’,每行内容之间有两个换行符。因此,要想去掉空行,我们只需设置open()函数中的参数newline=”。
或者,我们可以再次读取文件,然后使用replace方法将两个换行符替换成一个,string.replace(‘\n\n’,’\n’)。同样能实现以下效果:
- 字典中的值是列表的情况
我们希望将列表中的每个值写入不同的列中
(1)方法一
使用双层for循环
dic1={'Tom':[85,79,91],'Bob':[90,85,62]}
with open('D:\\dic.csv','w') as _f:
for k,v in dic1.items():
_f.write(k)
_f.write(',')
for item in v:
_f.write(str(item))
_f.write(',')
_f.write('\n')
结果如下:
(2)方法二
使用列表推导式
with open('D:\\dic.csv','w') as _f:
for k,v in dic1.items():
_f.write(k)
_f.write(',')
list([_f.write('{},'.format(str(i)))] for i in v)
_f.write('\n')
结果同上。
【注】欢迎批评指正