網站首頁 編程語言 正文
一、csv文件介紹
1、csv文件簡介
逗號分隔值(Comma-Separated Values,CSV,有時也稱為字符分隔值,因為分隔字符也可以不是逗號),其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個字符序列,不含必須像二進制數(shù)字那樣被解讀的數(shù)據(jù)。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或制表符。通常,所有記錄都有完全相同的字段序列。通常都是純文本文件。
2、為什么要使用csv文件
在Linux中我們可以通過命令在數(shù)據(jù)庫中把表導出來為csv結尾的文件,其實就是以逗號分割分txt文件,此文件我們可以在windows中打開并且為表格的形式,方便我們進行查看與再次操作。
eg:
MariaDB [test]> select * from 表名 into outfile "/tmp/test.csv" fields terminated by ",";
二、csv文件查看
注意:這里我是把csv文件和python代碼都放在同級目錄,否則要指定路徑!!!
1、測試文件創(chuàng)建
(1)這里我們以windows中的csv文件來做實驗
(2)我們可以選中內容復制進去,也可以上傳到linux中,這里我們選擇前者
[root@python _test]# vim test.csv ###可以發(fā)現(xiàn)復制進去的是以空格為分隔符
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
2、查看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']
3、查看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.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)
優(yōu)點:我們不知道表頭在具體那列,我們可以通過表頭名來獲取整列數(shù)據(jù),即我們可以隨便調整順序也不會影響我們的數(shù)據(jù)讀取!!!
[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
4、寫入文件(列表)
[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
5、寫入文件(字典)
[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
總結?
原文鏈接:https://blog.csdn.net/Dream_ya/article/details/83986935
相關推薦
- 2021-12-07 關于postman上傳文件執(zhí)行成功而使用collection?runner執(zhí)行失敗的問題_相關技巧
- 2022-11-23 GoLang?strings.Builder底層實現(xiàn)方法詳解_Golang
- 2023-01-29 React基于路由的代碼分割技術詳解_React
- 2022-05-25 kotlin將網絡上可以訪問的url圖片轉換成Base64字符串
- 2022-05-11 mac zsh: command not found: vim
- 2023-07-24 el-table文字根據(jù)首字母排序
- 2023-04-07 C#中括號強轉、as、is區(qū)別詳解_C#教程
- 2021-11-03 Linux系統(tǒng)下grub.cfg文件損壞修復步驟_Linux
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支