Python中csv文件处理操作是怎样的
Admin 2022-08-02 群英技术资讯 317 次浏览
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。
在Linux中我们可以通过命令在数据库中把表导出来为csv结尾的文件,其实就是以逗号分割分txt文件,此文件我们可以在windows中打开并且为表格的形式,方便我们进行查看与再次操作。
eg:
MariaDB [test]> select * from 表名 into outfile "/tmp/test.csv" fields terminated by ",";
注意:这里我是把csv文件和python代码都放在同级目录,否则要指定路径!!!
(1)这里我们以windows中的csv文件来做实验
(2)我们可以选中内容复制进去,也可以上传到linux中,这里我们选择前者
[root@python _test]# vim test.csv ###可以发现复制进去的是以空格为分隔符 id username passwd age 1 dream1 123 21 2 dream2 456 22 3 dream3 789 23 ### 把空格替换为逗号 [root@python _test]# sed -i 's/\s\+/,/g' test.csv
(1)读出结果
[root@python _test]# vim _test.py #!/usr/bin/env python #coding:utf-8 import csv with open('test.csv', encoding="utf-8") as f: reader = csv.reader(f) print(reader) print(list(reader)) ### 查看结果 [root@python _test]# python _test.py <_csv.reader object at 0x7f54d9a01eb8> [['id', 'username', 'passwd', 'age'], ['1', 'dream1', '123', '21'], ['2', 'dream2', '456', '22'], ['3', 'dream3', '789', '23']]
(2)遍历(从第一行读取)
[root@python _test]# vim _test.py #!/usr/bin/env python #coding:utf-8 import csv with open('test.csv', encoding="utf-8") as f: reader = csv.reader(f) for i in reader: print(reader.line_num, i) ### 查看结果 [root@python _test]# python _test.py 1 ['id', 'username', 'passwd', 'age'] 2 ['1', 'dream1', '123', '21'] 3 ['2', 'dream2', '456', '22'] 4 ['3', 'dream3', '789', '23']
(2)遍历(从第二行读取)
[root@python _test]# vim _test.py #!/usr/bin/env python #coding:utf-8 import csv with open('test.csv', encoding="utf-8") as f: reader = csv.reader(f) ### 这个就是我们得表头 next(reader) for i in reader: print(reader.line_num, i) ### 查看结果 [root@python _test]# python _test.py 2 ['1', 'dream1', '123', '21'] 3 ['2', 'dream2', '456', '22'] 4 ['3', 'dream3', '789', '23']
(1)查看
[root@python _test]# vim _test.py #!/usr/bin/env python #coding:utf-8 import csv with open('test.csv', encoding="utf-8") as f: reader = csv.DictReader(f) ### 表头 print (reader.fieldnames) print (reader,type(reader)) for i in reader: print (i) ### 查看结果 [root@python _test]# python _test.py ['id', 'username', 'passwd', 'age'] <csv.DictReader object at 0x7f3b02213a20> <class 'csv.DictReader'> OrderedDict([('id', '1'), ('username', 'dream1'), ('passwd', '123'), ('age', '21')]) OrderedDict([('id', '2'), ('username', 'dream2'), ('passwd', '456'), ('age', '22')]) OrderedDict([('id', '3'), ('username', 'dream3'), ('passwd', '789'), ('age', '23')])
(2)查看第一列(id)
优点:我们不知道表头在具体那列,我们可以通过表头名来获取整列数据,即我们可以随便调整顺序也不会影响我们的数据读取!!!
[root@python _test]# vim _test.py #!/usr/bin/env python #coding:utf-8 import csv with open('test.csv', encoding="utf-8") as f: reader = csv.DictReader(f) for i in reader: print (i['id']) ### 查看结果 [root@python _test]# python _test.py 1 2 3
[root@python _test]# vim _test.py #!/usr/bin/env python #coding:utf-8 import csv li = [["id","user","性别"],["1","dreamya1","男"],["2","dreamya2","女"]] with open('user.csv', 'w', newline='') as f: writer = csv.writer(f) for i in li: writer.writerow(i) ### 查看结果 [root@python _test]# python _test.py [root@python _test]# cat user.csv id,user,性别 1,dreamya1,男 2,dreamya2,女
下载到windows中查看:
[root@python _test]# sz user.csv
[root@python _test]# vim _test.py import csv #coding:utf-8 headers = ['id', 'username','passwd'] li = [{'id':'1','username':'dream1','passwd':'123'}, {'id':'2','username':'dream2','passwd':'456'}, ] with open('user.csv', 'w', newline='') as f: ### 表头传入 writer = csv.DictWriter(f, headers) writer.writeheader() ### 一行一行写入 for i in li: writer.writerow(i) ### 直接把li写入(多行) writer.writerows(li) ### 查看结果 [root@python _test]# python _test.py [root@python _test]# cat user.csv id,username,passwd 1,dream1,123 2,dream2,456 1,dream1,123 2,dream2,456
windows中查看:
[root@python _test]# sz user.csv
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天带大家来复习Python底层代码LIST,文中有非常详细的介绍及代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
Python矩阵输入python输入(数组、矩阵)一维输入对应不同变量一维数组的输入问题二维数组的输入问题Python矩阵输入经常在尝试python一些函数功能时想随便输入一个矩阵感
同时运行多个线程类似于同时运行多个不同的程序,但具有以下好处 :进程内的多个线程与主线程共享相同的数据空间,因此可以比单独的进程更容易地共享信息或彼此进行通信。线程有时也被称为轻量级进程,它们不需要太多的内存开销; 它们比进程便宜。
本文主要介绍python中ord()与chr()的区别:chr()函数参数是0 - 256 的一个整数,ord()函数参数是一个ascii字符;chr()函数返回值是当前整数对应的ascii字符,ord()函数返回对应字符的ascii码;chr函数将ascll码转为字符,ord函数将字符转为ascll码。具体请看下文。
这篇文章主要为大家介绍了python神经网络学习使用Keras进行简单分类,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008