網站首頁 編程語言 正文
思路
- 簡單的生成和讀取 CSV
- CSV 文件格式
- 使用 csv 庫
Python with CSV
先有個很樸素的生成和解析的方法。
生成:
data = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ] for cow in data: print(','.join(map(str, cow)))
生成結果:
1,2,3
4,5,6
7,8,9
解析
s = """1,2,3 4,5,6 7,8,9 """ cows = s.splitlines() data = [] for cow in cows: items = cow.split(',') data.append(items) # data # [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
但是顯示的數據可能不這么理想,比如其中的某一項有?,
?的時候就會有問題了。
CSV 格式
CSV 中有幾個概念需要先了解下。CSV 雖然是 Comma-separated values 但并不一定用逗號來分隔,也可以用其他的來分隔。同時 CSV 也沒有一個明確的規范。
從?Python 的 csv 的文檔中看到的一些關鍵術語:
delimiter
,最基本的分隔符
quotechar
,如果某個 item 中包含了分隔符,應該用 quotechar 把它包裹起來
doublequote
,如果某個 item 中出現了 quotechar 那么可以把整個內容用 quotechar 包裹,并把 quotechar double 一下用來做區分
escapechar
,如果不用 doublequote 的方法還可以用 escapechar 來輔助
lineterminator
,每一行的結束符,默認的是?\r\n
quoting
,可以選擇任何時候都使用 quotechar 來包裹內容,或者是需要用到的時候再用,或者不用
skipinitialspace
,是否忽略分隔符后面跟著的空格
strict
,這個是 Python 自己的,是否拋要異常
(上面的可能沒有覆蓋所有的細節,但大概就是這樣的情況)
使用 Python 的 csv 庫
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
很簡單的例子就是
import csv with open('some.csv', 'rb') as f: reader = csv.reader(f) for row in reader: print row
import csv with open('some.csv', 'wb') as f: writer = csv.writer(f) writer.writerows(someiterable)
另外這里面有個 dialect 的概念,就是用一個 dialect 來定義上面提到的那些解析規則。
可以自己注冊(csv.register_dialect
?)、列出所有的(csv.list_dialects
)、獲取某個(csv.get_dialect
)。
默認是用逗號分隔的?excel
?的 dialect,所以如果沒有特殊情況應該直接使用默認值就夠了。
其他
這次先只把基本概念了解下,后面可能還有文件編碼之類的坑,到時遇到了再回來更新。
參考
PEP 305 -- CSV File API | Python.org
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
原文鏈接:https://segmentfault.com/a/1190000006029896?utm_source=sf-similar-article
相關推薦
- 2023-07-14 react 如何實現富文本編輯器
- 2022-10-12 C#集合本質之鏈表的用法詳解_C#教程
- 2022-10-15 淺談React?useDebounce?防抖原理_React
- 2022-09-16 Pandas數值排序?sort_values()的使用_python
- 2022-03-06 Android中SurfaceFlinger工作原理_Android
- 2023-01-05 Kotlin的空安全處理方式詳解_Android
- 2022-07-12 Android廣播和消息跨進程通信并返回數據
- 2022-05-02 winform關閉窗體FormClosing事件用法介紹_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支