最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中內(nèi)置庫(kù)csv的使用及說(shuō)明

 更新時(shí)間:2022年11月29日 16:31:47   作者:玉米叢里吃過(guò)虧  
這篇文章主要介紹了python中內(nèi)置庫(kù)csv的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

所謂的CSV(逗號(hào)分隔值)格式是電子表格和數(shù)據(jù)庫(kù)最常用的導(dǎo)入和導(dǎo)出格式。

嘗試使用CSV格式進(jìn)行標(biāo)準(zhǔn)化描述之前已經(jīng)使用了很多年。

該csv模塊reader和writer對(duì)象讀取和寫入序列。

程序員還可以使用DictReader和DictWriter類以字典形式讀取和寫入數(shù)據(jù)。

讀取

reader(iterable, dialect=‘excel', *args, **kwargs)

該方法返回一個(gè)reader對(duì)象,該對(duì)象將遍歷給定的iterable中的行。默認(rèn)情況下,從csv文件中讀取的每一行都作為字符串列表返回,除非指定了quoting參數(shù)值為QUOTE_NONNUMERIC。如下:

假設(shè)有這么一個(gè)文件a.csv,內(nèi)容如下:

1,2,3,4
5,6,7,8
9,10,11,12

我們讀取一下這個(gè)csv

import csv

with open('a.csv') as f:
? ? reader = csv.reader(f)
? ? print(type(reader), reader)
? ? for item in reader:
? ? ? ? print(type(item), item)
? ? ? ??
############# 打印結(jié)果如下 #############
<class '_csv.reader'> <_csv.reader object at 0x000002194D601F50>
<class 'list'> ['1', '2', '3', '4']
<class 'list'> ['5', '6', '7', '8']
<class 'list'> ['9', '10', '11', '12']

當(dāng)我們?cè)O(shè)置quoting參數(shù)值為QUOTE_NONNUMERIC時(shí):

with open('a.csv') as f:
? ? reader = csv.reader(f, quoting=csv.QUOTE_NONNUMERIC)
? ? print(type(reader), reader)
? ? for item in reader:
? ? ? ? print(type(item), item)
? ? ? ??
############# 打印結(jié)果如下 #############
<class '_csv.reader'> <_csv.reader object at 0x000002BFC3291F50>
<class 'list'> [1.0, 2.0, 3.0, 4.0]
<class 'list'> [5.0, 6.0, 7.0, 8.0]
<class 'list'> [9.0, 10.0, 11.0, 12.0]

更多參數(shù)解釋請(qǐng)看下面kwargs參數(shù)

DictReader(f, fieldnames=None, restkey=None, restval=None, dialect=“excel”, *args, **kwds)

創(chuàng)建一個(gè)DictReader對(duì)象,其功能類似于常規(guī)讀取器,但是將每行的信息映射到OrderDict當(dāng)中。

OrderDict的鍵名可由filednames參數(shù)指定,如果未指定,那么將由第一行數(shù)據(jù)作為鍵名;如果數(shù)據(jù)中的字段多于字段名列表,則剩余的數(shù)據(jù)以列表存儲(chǔ)起來(lái),其健名由restkey指定(默認(rèn)為None);如果數(shù)據(jù)中的值少于字段名列表,則缺少的值將默認(rèn)填充為restval設(shè)定的值(默認(rèn)為None)。

with open('a.csv') as f:
? ? reader = csv.DictReader(f)
? ? print(type(reader), reader)
? ? for item in reader:
? ? ? ? print(type(item), item)

############# 打印結(jié)果如下 #############
<class 'csv.DictReader'> <csv.DictReader object at 0x000001F3EE9A8898>
<class 'collections.OrderedDict'> OrderedDict([('1', '5'), ('2', '6'), ('3', '7'), ('4', '8')])
<class 'collections.OrderedDict'> OrderedDict([('1', '9'), ('2', '10'), ('3', '11'), ('4', '12')])

設(shè)置了fieldnames情況下:

...
reader = csv.DictReader(f, fieldnames=['a', 'b', 'c', 'd'])
...

############# 打印結(jié)果如下 #############
<class 'csv.DictReader'> <csv.DictReader object at 0x00000249BED38898>
<class 'collections.OrderedDict'> OrderedDict([('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')])
<class 'collections.OrderedDict'> OrderedDict([('a', '5'), ('b', '6'), ('c', '7'), ('d', '8')])
<class 'collections.OrderedDict'> OrderedDict([('a', '9'), ('b', '10'), ('c', '11'), ('d', '12')])

無(wú)論是reader對(duì)象還是DictReader對(duì)象,都具有如下操作:

  • __next__(): 將閱讀器可迭代對(duì)象的下一行作為列表或字典返回
  • dialect: 獲取閱讀器的dialect描述
  • line_num: 獲取閱讀器讀取的行數(shù)
  • fieldnames: 獲取鍵名(DictReader對(duì)象獨(dú)有)

更多參數(shù)解釋請(qǐng)看下面kwargs參數(shù)

寫入

writer(fileobj, dialect=‘excel', *args, **kwargs)

將用戶數(shù)據(jù)寫入到指定的文件對(duì)象上,返回一個(gè)writer對(duì)象

import csv

# 一定要指定newline='', 否則將會(huì)每行數(shù)據(jù)之間將會(huì)有空行
with open('b.csv', mode='w', newline='') as f:
? ? writer = csv.writer(f)
? ? writer.writerow([1, 2, 3, 4])
? ? writer.writerow([5, 6, 7, 8])

更多參數(shù)解釋請(qǐng)看下面kwargs參數(shù)

DictWriter(f, fieldnames, restval="", extrasaction=“raise”, dialect=“excel”, *args, **kwds)

將用戶數(shù)據(jù)寫入到指定文件對(duì)象上,但需指定fieldnames(鍵名),返回一個(gè)DictWriter對(duì)象。

如果數(shù)據(jù)中的值少于字段名列表,則缺少的值將默認(rèn)填充為restval設(shè)定的值(默認(rèn)為None)。

import csv

# 一定要指定newline='', 否則將會(huì)每行數(shù)據(jù)之間將會(huì)有空行
with open('b.csv', mode='w', newline='') as f:
? ? writer = csv.DictWriter(f, fieldnames=['a', 'b', 'c', 'd'])
? ? writer.writerow({'a': 1, 'b': 2, 'c': 3, 'd': 4})
? ? writer.writerow({'a': 5, 'b': 6, 'c': 7, 'd': 8})

值得注意的是,默認(rèn)情況下fieldnames數(shù)據(jù)并不會(huì)寫入到文件當(dāng)中!

無(wú)論是reader對(duì)象還是DictReader對(duì)象,都具有如下操作:

writerow(rowdict): 將行數(shù)據(jù)寫入到文件對(duì)象
writerows(rowdicts): 所有行數(shù)據(jù)寫入到文件對(duì)象當(dāng)中
import csv
with open('b.csv', mode='w', newline='') as f:
? ? writer = csv.writer(f)
? ? writer.writerows([[1, 2, 3, 4], [5, 6, 7, 8]])
  • dialect: 獲取寫入器的dialect描述
  • writeheader(): 用fieldnames數(shù)據(jù)寫入一行(DictWriter對(duì)象獨(dú)有)

更多參數(shù)解釋請(qǐng)看下面kwargs參數(shù)

kwargs參數(shù)

  • delimiter

一個(gè)用于分割字段的分隔符,默認(rèn)為,

  • lineterminator

行終止符,默認(rèn)為\r\n

  • quoting

控制何時(shí)引用應(yīng)該由作者產(chǎn)生并被讀者識(shí)別

  • skipinitialspace

如果設(shè)置為True,分割符后面的空白將被忽略。默認(rèn)為False

"""
假設(shè)a.csv的內(nèi)容如下
1, 2,3,4
"""

import csv
with open('a.csv') as f:
? ? reader = csv.reader(f)
? ? # reader = csv.reader(f, skipinitialspace=True)
? ? for item in reader:
? ? ? ? print(type(item), item)

############ 默認(rèn)情況,打印如下 ############
<class 'list'> ['1', ' 2', '3', '4']

############ skipinitialspace=True,打印如下 ############
<class 'list'> ['1', '2', '3', '4']
  • strict

如果設(shè)置為True,則將csv輸入錯(cuò)誤時(shí)將引發(fā)異常。默認(rèn)為False

更多參數(shù)解釋以及csv模塊的使用,請(qǐng)看:https://docs.python.org/3.7/library/csv.html

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python讓列表逆序排列的3種方式小結(jié)

    Python讓列表逆序排列的3種方式小結(jié)

    這篇文章主要介紹了Python讓列表逆序排列的3種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 詳解python-nmap的安裝與常用方法

    詳解python-nmap的安裝與常用方法

    ??python-nmap??是一個(gè)基于??Python??的??nmap??網(wǎng)絡(luò)掃描器接口,它允許用戶通過(guò)???Python???腳本輕松地調(diào)用???nmap???的功能,??nmap??是一款功能強(qiáng)大的網(wǎng)絡(luò)掃描和發(fā)現(xiàn)工具,本文給大家介紹python-nmap的安裝與常用方法,需要的朋友可以參考下
    2024-12-12
  • Python selenium文件上傳方法匯總

    Python selenium文件上傳方法匯總

    這篇文章主要為大家詳細(xì)介紹了Python selenium文件上傳方法,selenium文件上傳的所有方法進(jìn)行整理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Python 3 使用Pillow生成漂亮的分形樹(shù)圖片

    Python 3 使用Pillow生成漂亮的分形樹(shù)圖片

    這篇文章主要介紹了Python 3 使用Pillow生成漂亮的分形樹(shù)圖片,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python有幾個(gè)版本

    python有幾個(gè)版本

    在本篇內(nèi)容里小編給大家分享的是關(guān)于python版本的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 一篇文章帶你了解python集合基礎(chǔ)

    一篇文章帶你了解python集合基礎(chǔ)

    今天小編就為大家分享一篇關(guān)于Python中的集合介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-08-08
  • python棧的基本定義與使用方法示例【初始化、賦值、入棧、出棧等】

    python棧的基本定義與使用方法示例【初始化、賦值、入棧、出棧等】

    這篇文章主要介紹了python棧的基本定義與使用方法,結(jié)合實(shí)例形式分析了Python棧的初始化、賦值、入棧、出棧等相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • Python實(shí)現(xiàn)PyPDF2處理PDF文件的方法示例

    Python實(shí)現(xiàn)PyPDF2處理PDF文件的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)PyPDF2處理PDF文件的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python實(shí)現(xiàn)制作透明背景的電子印章

    Python實(shí)現(xiàn)制作透明背景的電子印章

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)制作透明背景的電子印章,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-09-09
  • Python+Kepler.gl實(shí)現(xiàn)時(shí)間輪播地圖過(guò)程解析

    Python+Kepler.gl實(shí)現(xiàn)時(shí)間輪播地圖過(guò)程解析

    這篇文章主要介紹了Python+Kepler.gl實(shí)現(xiàn)時(shí)間輪播地圖過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

永泰县| 达日县| 收藏| 武山县| 白河县| 甘泉县| 陇南市| 麻栗坡县| 靖江市| 峨眉山市| 陕西省| 当阳市| 微山县| 鸡泽县| 旬邑县| 嵊泗县| 株洲市| 邓州市| 吉林市| 建瓯市| 宝应县| 广宁县| 揭西县| 大埔区| 康马县| 华容县| 吐鲁番市| 浏阳市| 来宾市| 南开区| 清涧县| 格尔木市| 黄石市| 宁阳县| 开远市| 荣成市| 三亚市| 临猗县| 云阳县| 嵩明县| 巴林左旗|