Python CSV 文件解析和生成方法示例
思路
- 簡單的生成和讀取 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']]但是顯示的數(shù)據(jù)可能不這么理想,比如其中的某一項有 , 的時候就會有問題了。
CSV 格式
CSV 中有幾個概念需要先了解下。CSV 雖然是 Comma-separated values 但并不一定用逗號來分隔,也可以用其他的來分隔。同時 CSV 也沒有一個明確的規(guī)范。
從 Python 的 csv 的文檔中看到的一些關鍵術語:
delimiter,最基本的分隔符
quotechar,如果某個 item 中包含了分隔符,應該用 quotechar 把它包裹起來
doublequote,如果某個 item 中出現(xiàn)了 quotechar 那么可以把整個內(nèi)容用 quotechar 包裹,并把 quotechar double 一下用來做區(qū)分
escapechar,如果不用 doublequote 的方法還可以用 escapechar 來輔助
lineterminator,每一行的結束符,默認的是 \r\n
quoting,可以選擇任何時候都使用 quotechar 來包裹內(nèi)容,或者是需要用到的時候再用,或者不用
skipinitialspace,是否忽略分隔符后面跟著的空格
strict,這個是 Python 自己的,是否拋要異常
(上面的可能沒有覆蓋所有的細節(jié),但大概就是這樣的情況)
使用 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 rowimport csv
with open('some.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(someiterable)另外這里面有個 dialect 的概念,就是用一個 dialect 來定義上面提到的那些解析規(guī)則。
可以自己注冊(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
以上就是Python CSV 文件解析和生成方法示例的詳細內(nèi)容,更多關于Python CSV文件解析生成的資料請關注腳本之家其它相關文章!
相關文章
python安裝numpy&安裝matplotlib& scipy的教程
下面小編就為大家?guī)硪黄猵ython安裝numpy&安裝matplotlib& scipy的教程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
Anaconda安裝以及修改環(huán)境默認位置圖文教程
Anaconda是一個用于科學計算的Python發(fā)行版,支持Linux,Mac, Windows, 包含了眾多流行的科學計算、數(shù)據(jù)分析的 Python 包,下面這篇文章主要給大家介紹了關于Anaconda安裝以及修改環(huán)境默認位置的相關資料,需要的朋友可以參考下2023-04-04
Python結合OpenCV和Pyzbar實現(xiàn)實時攝像頭識別二維碼
這篇文章主要為大家詳細介紹了如何使用Python編程語言結合OpenCV和Pyzbar庫來實時攝像頭識別二維碼,文中的示例代碼講解詳細,需要的可以參考下2024-01-01
pandas常用表連接merge/concat/join/append詳解
使用python的pandas庫可以很容易幫你搞定,而且性能也是很出色的;百萬級的表關聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧2023-02-02
PyTorch上實現(xiàn)卷積神經(jīng)網(wǎng)絡CNN的方法
本篇文章主要介紹了PyTorch上實現(xiàn)卷積神經(jīng)網(wǎng)絡CNN的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Python連接MySQL數(shù)據(jù)庫并查找表信息
本文主要介紹了Python連接MySQL數(shù)據(jù)庫并查找表信息,通過使用Python中的MySQL Connector模塊,連接到MySQL服務器并執(zhí)行SQL查詢語句,可以獲取表的結構、列信息、行數(shù)據(jù)等,感興趣的可以了解一下2023-08-08

