python 删除csv第一行_python 标准库学习之 csv
本文由作者 憑海臨風 授權(quán)刊登。原文地址:https://jeffsui.github.io/2020/01/02/python-standard-library-csv/
文檔路徑
官方文檔:https://docs.python.org/zh-cn/3.8/library/csv.html
CSV 文件格式
文件擴展名為.csv,通用的電子表格文件格式,經(jīng)常使用在數(shù)據(jù)分析中。
分隔符可能有所差別。python 中的 csv 模塊提供了對 csv 文件的讀寫操作,非常方便。
csv 常用方法
reader
'excel',?***fmtparams)返回一個 reader 對象,該對象遍歷 csvfile。csv 對象可以是任何對象,只要這個對象支持 iteratable 協(xié)議,并在每次調(diào)用 __next__() 方法時都返回字符串即可。如果 csvfile 是文件對象,則打開它時應使用 newline=''。可選參數(shù) dialect 是用于不同的 csv 文件類型,它可以是 Dialect 類的子類的實例,也可以是 list_dialects() 函數(shù)返回的字符串之一。完整的解釋可以參考 csv文件格式參數(shù)。
csv 文件的每一行都會默認當做字符串列表解析,除非指定了 QUOTE_NONNUMERIC 格式選項(在這種情況下,未加引號的字段會轉(zhuǎn)換為浮點數(shù)),否則不會執(zhí)行自動數(shù)據(jù)類型轉(zhuǎn)換。
一個讀文件例子
import?csvwriter
'excel',?**fmtparams)返回一個 writer 對象,該對象負責將用戶的數(shù)據(jù)在給定的文件類對象上轉(zhuǎn)換為帶分隔符的字符串。csvfile 可以是具有 write() 方法的任何對象。如果 csvfile 是文件對象,則打開它時應使用 newline=''。
為了盡量簡化與數(shù)據(jù)庫 API 模塊之間的對接,None 值會寫入為空字符串。雖然這個轉(zhuǎn)換是不可逆的,但它讓 SQL 空數(shù)據(jù)值轉(zhuǎn)儲到 CSV 文件更容易,而無需預處理從 cursor.fetch* 調(diào)用返回的數(shù)據(jù)。寫入前,所有非字符串數(shù)據(jù)都先用 str() 轉(zhuǎn)化為字符串再寫入。
一個寫文件例子
import?csvregister_dialect
csv.register_dialect(name[,?dialect[,?**fmtparams]])將 name 與 dialect 關聯(lián)起來。name 必須是字符串。要指定變種 (dialect),可以給出 Dialect 的子類,或給出 fmtparams 關鍵字參數(shù),或兩者都給出(此時關鍵字參數(shù)會覆蓋 dialect 參數(shù))。有關方言和格式設置參數(shù)的完整詳細信息,請參見 方言格式參數(shù) 部分。
其他方法:
csv.unregister_dialect(name)
從變種注冊表中刪除 name 對應的變種。如果 name 不是已注冊的變種名稱,則拋出 Error 異常。csv.get_dialect(name)
返回 name 對應的變種。如果 name 不是已注冊的變種名稱,則拋出 Error 異常。該函數(shù)返回的是不可變的 Dialect 對象。csv.list_dialects()
返回所有已注冊變種的名稱。csv.field_size_limit([new_limit])
返回解析器當前允許的最大字段大小。如果指定了 new_limit,則它將成為新的最大字段大小。
csv 模塊定義的類
DictReader
class?csv.DictReader(*f*,?*fieldnames=None*,?*restkey=None*,?*restval=None*,?*dialect='excel'*,?**args*,?***kwds*)創(chuàng)建一個對象,該對象在操作上類似于常規(guī) reader,但是將每行中的信息映射到一個 dict,該 dict 的鍵由 fieldnames 可選參數(shù)給出。
fieldnames 參數(shù)是一個 sequence。如果省略 fieldnames,則文件 f 第一行中的值將用作字段名。無論字段名是如何確定的,字典都將保留其原始順序。
如果某一行中的字段多于字段名,則其余字段將放入列表中,字段名由 restkey 指定(默認為 None)。如果非空白行的字段少于字段名,則缺少的值將用 None 填充。
所有其他可選或關鍵字參數(shù)都傳遞給底層的 reader 實例。
3.8 中,返回的行是 dict 類型。
一個使用DictReader例子
import?csvDictWriter
class?csv.DictWriter(f,?fieldnames,?restval='',?extrasaction='raise',?dialect='excel',?**args,?**kwds)創(chuàng)建一個對象,該對象在操作上類似常規(guī) writer,但會將字典映射到輸出行。fieldnames 參數(shù)是由鍵組成的 序列,它指定字典中值的順序,這些值會按指定順序傳遞給 writerow() 方法并寫入文件 f。如果字典缺少 fieldnames 中的鍵,則可選參數(shù) restval 用于指定要寫入的值。如果傳遞給 writerow() 方法的字典的某些鍵在 fieldnames 中找不到,則可選參數(shù) extrasaction 用于指定要執(zhí)行的操作。如果將其設置為默認值 'raise',則會引發(fā) ValueError。如果將其設置為 'ignore',則字典中的其他鍵值將被忽略。所有其他可選或關鍵字參數(shù)都傳遞給底層的 writer 實例。
注意,與 DictReader 類不同,DictWriter 類的 fieldnames 參數(shù)不是可選參數(shù)
一個使用DictWriter 寫入文件例子
import?csv其他方法:
class csv.Dialect
Dialect 類是主要依賴于其屬性的容器類,用于將定義好的參數(shù)傳遞給特定的 reader 或 writer 實例。
class csv.excel
excel 類定義了 Excel 生成的 CSV 文件的常規(guī)屬性。它在變種注冊表中的名稱是 'excel'。
class csv.excel_tab
excel_tab 類定義了 Excel 生成的、制表符分隔的 CSV 文件的常規(guī)屬性。它在變種注冊表中的名稱是 'excel-tab'。
class csv.unix_dialect
unix_dialect 類定義了在 UNIX 系統(tǒng)上生成的 CSV 文件的常規(guī)屬性,即使用 '\n' 作為換行符,且所有字段都有引號包圍。它在變種注冊表中的名稱是 'unix'。
class csv.Sniffer
Sniffer 類用于推斷 CSV 文件的格式。
Sniffer 類提供了兩個方法:
sniff(sample, delimiters=None)
分析給定的 sample 并返回一個 Dialect 子類,該子類中包含了分析出的格式參數(shù)。如果給出可選的 delimiters 參數(shù),則該參數(shù)會被解釋為字符串,該字符串包含了可能的有效定界符。
has_header(sample)
分析示例文本(假定為 CSV 格式),如果第一行很可能是一系列列標題,則返回 True。
一個使用 Sniffer 的例子:
with?open(csv 中定義的常量
csv.QUOTE_ALL
指示 writer 對象給所有字段加上引號。
csv.QUOTE_MINIMAL
指示 writer 對象僅為包含特殊字符(例如 定界符、引號字符 或 行結(jié)束符 中的任何字符)的字段加上引號。
csv.QUOTE_NONNUMERIC
指示 writer 對象為所有非數(shù)字字段加上引號。指示 reader 將所有未用引號引出的字段轉(zhuǎn)換為 float 類型。
csv.QUOTE_NONE
指示 writer 對象不使用引號引出字段。當 定界符 出現(xiàn)在輸出數(shù)據(jù)中時,其前面應該有 轉(zhuǎn)義符。如果未設置 轉(zhuǎn)義符,則遇到任何需要轉(zhuǎn)義的字符時,writer 都會拋出 Error 異常。指示 reader 不對引號字符進行特殊處理。
csv 模塊定義了以下異常:
exception csv.Error
該異常可能由任何發(fā)生錯誤的函數(shù)拋出。
備注
如果沒有指定 newline='',則嵌入引號中的換行符將無法正確解析,并且在寫入時,使用 \r\n 換行的平臺會有多余的 \r 寫入。由于 csv 模塊會執(zhí)行自己的(通用)換行符處理,因此指定 newline='' 應該總是安全的。
總結(jié)
csv 模塊是一個非常實用的處理 csv 文件的標準庫,提供了兩個核心類。一個是把 csv 文件對象當作字符串列表解析 csv 文件的類,另一個是把 csv 文件對象當作字典解析的類。
End
碼農(nóng)升級
長按二維碼關注
你點的每個在看,我都認真當成了喜歡總結(jié)
以上是生活随笔為你收集整理的python 删除csv第一行_python 标准库学习之 csv的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于生活很现实的说说精选194个
- 下一篇: 儿童python编程能给孩子带来哪些好处