python 读写csv文件

csv文件是个什么?

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本(NOTE)来开启,再则先另存新档后用EXCEL开启,也是方法之一。------百度百科

python读取csv文件的方式有挺多种的,可以用pandas、numpy、csv等。我在这里简单介绍用csv读取文件

读取csv文件

我们可以使用python自带的csv库来快速的读取文件


import os#导入所需库
csv_data = csv.reader(open("csvdata.csv",'r'))#先用open(path,mode="r")来打开文件,然后用csv.reader()读取csv文件
print(type(csv_data))

mode有一下几种,每一种都是一种打开文件的方式
'r'       open for reading (default)
'w'       open for writing, truncating the file first
'x'       create a new file and open it for writing
'a'       open for writing, appending to the end of the file if it exists
'b'       binary mode
't'       text mode (default)
'+'       open a disk file for updating (reading and writing)
'U'       universal newline mode (deprecated)

我们可以看到输出是一个<class '_csv.reader'>对象。

如果直接输出csv_data会得到怎样的结果呢?

print(csv_data)

输出是<_csv.reader object at 0x000001A5EEEA2730>

这不是csv的内容啊?这是怎么回事啊?因为csv.reader()返回是一个迭代类型,需要通过循环或迭代器访问

for data in csv_data:
    print(data)

这样就输出我们想要的内容啦:

['3e82a02f-4267-11e8-aaf9-00163e025669', '19']
['79d16df3-4266-11e8-aaf9-00163e025669', '19']

['9b4d4294-4266-11e8-aaf9-00163e025669', '19']

这是list类型,也就是它拥有list的所有属性

访问csv的一列数据

可以用下列语句来得到一列的数据,例如我得到第一列的数据:
list = [row[1] for row in csv_data]
print(type(list))
print(list)

输出:<class 'list'>

       ['CATEGORY_ID', '0', '0', '0']

      返回的对象是list类型

写csv文件

  • writerow():只能一行一行的写入文件
  • writerows():可以多行一次写入
一行一行的写入文件:
f = open("data.csv","a",newline='')
c = csv.writer(f)
list = ['haha','hehe']
list1 = ['heihei','enen']

c.writerow(["index","a_name","b_name"])
c.writerow(["index","a_name","b_name"])
f.close()

由于open是mode="a",这是以append方式写文件,也就是不会覆盖原来的内容,在文本最后追加一行,newline可以不写,但是建议加上,如果不加的话,每行数据之间会有一行空格

多行同时写入:
f = open("data.csv","w",newline='')
writer = csv.writer(f)

#先写入columns_name
writer.writerow(["id","name","age"])
#写入多行用writerows
writer.writerows([[0,"wang",18],[1,"zhao",20],[2,"zhou",23]])
f.close()

文件内容:

id,name,age
0,wang,18
1,zhao,20
2,zhou,23

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值