日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python如何讀取、寫入CSV數據

瀏覽:94日期:2022-07-16 10:52:22

問題

你想讀寫一個CSV格式的文件。

解決方案

對于大多數的CSV格式的數據讀寫問題,都可以使用 csv 庫。、例如,假設你在一個名叫stocks.csv文件中有一些股票市場數據,就像這樣:

下面向你展示如何將這些數據讀取為一個元組的序列:

import csvwith open(’stocks.csv’) as f: f_csv = csv.reader(f) headers = next(f_csv) for row in f_csv: # Process row ...

在上面的代碼中,row 會是一個元組。因此,為了訪問某個字段,你需要使用下標,如row[0]訪問Symbol,row[4]訪問Change。

由于這種下標訪問通常會引起混淆,你可以考慮使用命名元組。例如:

from collections import namedtuplewith open(’stock.csv’) as f: f_csv = csv.reader(f) headings = next(f_csv) Row = namedtuple(’Row’, headings) for r in f_csv: row = Row(*r) # Process row ...

它允許你使用列名如 row.Symbol 和 row.Change 代替下標訪問。需要注意的是這個只有在列名是合法的Python標識符的時候才生效。如果不是的話,你可能需要修改下原始的列名(如將非標識符字符替換成下劃線之類的)。

另外一個選擇就是將數據讀取到一個字典序列中去。可以這樣做:

import csvwith open(’stocks.csv’) as f: f_csv = csv.DictReader(f) for row in f_csv: # process row ...

在這個版本中,你可以使用列名去訪問每一行的數據了。比如,row[’Symbol’] 或者 row[’Change’] 。

為了寫入CSV數據,你仍然可以使用csv模塊,不過這時候先創建一個 writer 對象。例如;

headers = [’Symbol’,’Price’,’Date’,’Time’,’Change’,’Volume’]rows = [(’AA’, 39.48, ’6/11/2007’, ’9:36am’, -0.18, 181800), (’AIG’, 71.38, ’6/11/2007’, ’9:36am’, -0.15, 195500), (’AXP’, 62.58, ’6/11/2007’, ’9:36am’, -0.46, 935000), ]with open(’stocks.csv’,’w’) as f: f_csv = csv.writer(f) f_csv.writerow(headers) f_csv.writerows(rows)

如果你有一個字典序列的數據,可以像這樣做:

headers = [’Symbol’, ’Price’, ’Date’, ’Time’, ’Change’, ’Volume’]rows = [{’Symbol’:’AA’, ’Price’:39.48, ’Date’:’6/11/2007’, ’Time’:’9:36am’, ’Change’:-0.18, ’Volume’:181800}, {’Symbol’:’AIG’, ’Price’: 71.38, ’Date’:’6/11/2007’, ’Time’:’9:36am’, ’Change’:-0.15, ’Volume’: 195500}, {’Symbol’:’AXP’, ’Price’: 62.58, ’Date’:’6/11/2007’, ’Time’:’9:36am’, ’Change’:-0.46, ’Volume’: 935000}, ]with open(’stocks.csv’,’w’) as f: f_csv = csv.DictWriter(f, headers) f_csv.writeheader() f_csv.writerows(rows)

討論

你應該總是優先選擇csv模塊分割或解析CSV數據。例如,你可能會像編寫類似下面這樣的代碼:

with open(’stocks.csv’) as f:for line in f: row = line.split(’,’) # process row ...

使用這種方式的一個缺點就是你仍然需要去處理一些棘手的細節問題。比如,如果某些字段值被引號包圍,你不得不去除這些引號。另外,如果一個被引號包圍的字段碰巧含有一個逗號,那么程序就會因為產生一個錯誤大小的行而出錯。

默認情況下,csv 庫可識別Microsoft Excel所使用的CSV編碼規則。這或許也是最常見的形式,并且也會給你帶來最好的兼容性。然而,如果你查看csv的文檔,就會發現有很多種方法將它應用到其他編碼格式上(如修改分割字符等)。例如,如果你想讀取以tab分割的數據,可以這樣做:

# Example of reading tab-separated valueswith open(’stock.tsv’) as f: f_tsv = csv.reader(f, delimiter=’t’) for row in f_tsv: # Process row ...

如果你正在讀取CSV數據并將它們轉換為命名元組,需要注意對列名進行合法性認證。例如,一個CSV格式文件有一個包含非法標識符的列頭行,類似下面這樣:

這樣最終會導致在創建一個命名元組時產生一個 ValueError 異常而失敗。為了解決這問題,你可能不得不先去修正列標題。例如,可以像下面這樣在非法標識符上使用一個正則表達式替換:

import rewith open(’stock.csv’) as f: f_csv = csv.reader(f) headers = [ re.sub(’[^a-zA-Z_]’, ’_’, h) for h in next(f_csv) ] Row = namedtuple(’Row’, headers) for r in f_csv: row = Row(*r) # Process row ...

還有重要的一點需要強調的是,csv產生的數據都是字符串類型的,它不會做任何其他類型的轉換。如果你需要做這樣的類型轉換,你必須自己手動去實現。下面是一個在CSV數據上執行其他類型轉換的例子:

col_types = [str, float, str, str, float, int]with open(’stocks.csv’) as f: f_csv = csv.reader(f) headers = next(f_csv) for row in f_csv: # Apply conversions to the row items row = tuple(convert(value) for convert, value in zip(col_types, row)) ...

另外,下面是一個轉換字典中特定字段的例子:

print(’Reading as dicts with type conversion’)field_types = [ (’Price’, float), (’Change’, float), (’Volume’, int) ]with open(’stocks.csv’) as f: for row in csv.DictReader(f): row.update((key, conversion(row[key])) for key, conversion in field_types) print(row)

通常來講,你可能并不想過多去考慮這些轉換問題。在實際情況中,CSV文件都或多或少有些缺失的數據,被破壞的數據以及其它一些讓轉換失敗的問題。因此,除非你的數據確實有保障是準確無誤的,否則你必須考慮這些問題(你可能需要增加合適的錯誤處理機制)。

最后,如果你讀取CSV數據的目的是做數據分析和統計的話,你可能需要看一看 Pandas 包。Pandas 包含了一個非常方便的函數叫 pandas.read_csv() ,它可以加載CSV數據到一個 DataFrame 對象中去。然后利用這個對象你就可以生成各種形式的統計、過濾數據以及執行其他高級操作了。

以上就是Python如何讀寫CSV數據的詳細內容,更多關于Python讀寫CSV數據的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩午夜视频在线| 亚洲男女av一区二区| 蜜乳av另类精品一区二区| 亚洲手机在线| 制服诱惑一区二区| 国产午夜精品一区在线观看| 日韩午夜视频在线| 激情不卡一区二区三区视频在线| 国产一区二区精品福利地址| 国产99久久| 日韩欧美中文字幕一区二区三区| 国产欧洲在线| 久久毛片亚洲| 日韩欧美中文字幕电影 | 国产精品久久久久久久久久10秀| 亚洲精品第一| 九九久久婷婷| 鲁大师成人一区二区三区| 黄页网站一区| 亚洲婷婷丁香| 国产伦理久久久久久妇女| 麻豆精品视频在线观看| av高清不卡| 91九色精品| 日本高清久久| 精品精品久久| 久久久久欧美精品| 欧美午夜不卡| 先锋影音久久久| 在线观看视频免费一区二区三区| 日本午夜免费一区二区| 九九久久国产| 99视频在线精品国自产拍免费观看| 日韩中文欧美在线| 国产日韩欧美一区| 99久久激情| 日韩高清在线观看一区二区| 色婷婷亚洲mv天堂mv在影片| 偷拍欧美精品| 久久久久九九精品影院| 亚洲一级黄色| 欧美一级久久| 国产v日韩v欧美v| 最新国产精品视频| 国产精品久久久久久模特| 1000部精品久久久久久久久| 久久国内精品| 午夜精品一区二区三区国产| 国产精品久久久免费| 狠狠爱www人成狠狠爱综合网| 美女视频免费精品| 日本亚洲最大的色成网站www | 里番精品3d一二三区| 亚洲女同一区| 成人在线免费观看91| 国产尤物精品| 国产成人久久精品一区二区三区| 亚洲欧洲一区二区天堂久久| 国产一区二区三区精品在线观看| 亚洲色图国产| 亚洲一区区二区| bbw在线视频| 日韩1区在线| 精品日本视频| 国产精品黄色片| 国产欧美在线观看免费| 综合视频一区| 亚洲精品伊人| 日本一区免费网站| 天海翼精品一区二区三区| 国产精品91一区二区三区| 久久久9色精品国产一区二区三区| 精品资源在线| 91嫩草亚洲精品| 日韩高清中文字幕一区二区| 欧美日本一区| 久久福利在线| 日韩av有码| 久久精品官网| 婷婷激情综合| 男女男精品视频网| 亚洲精品四区| 国产乱子精品一区二区在线观看| 国产欧美一区二区色老头| 美女在线视频一区| 麻豆视频一区二区| 日韩成人a**站| 亚洲女同一区| 日韩激情啪啪| 福利一区在线| 黄色成人91| 青草综合视频| 韩国久久久久久| 在线亚洲欧美| 国产精品一区二区精品| 久久精品女人| 亚洲精品888| 国产精品一区二区av日韩在线| 福利欧美精品在线| 在线亚洲激情| 欧美亚洲三区| 免费污视频在线一区| 蜜臀久久99精品久久久久宅男| 欧美永久精品| 欧美精品一区二区三区精品| 欧美日韩网址| 五月综合激情| 久久精品资源| 欧美日韩午夜| 亚洲精品国产精品粉嫩| 久久天堂精品| 牛牛精品成人免费视频| 免费国产亚洲视频| 久久久夜夜夜| 日本一二区不卡| 亚洲色图国产| 鲁大师成人一区二区三区| 天堂日韩电影| 国产精品一区二区99| 国产精品av久久久久久麻豆网| 久久最新视频| 色老板在线视频一区二区| 蜜桃视频免费观看一区| 欧美xxxx中国| 日韩激情啪啪| 亚洲综合二区| 国产精品成人a在线观看| 亚洲视频电影在线| 午夜久久中文| 国产伦一区二区三区| 日韩精品a在线观看91| 中文字幕在线看片| 国产日韩一区二区三免费高清| 性欧美videohd高精| 国产精品白丝久久av网站| 美女精品一区| 午夜欧美精品久久久久久久| 国产精品福利在线观看播放| 日韩精品欧美成人高清一区二区| 91精品国产成人观看| 免费视频一区二区三区在线观看 | 久久精品在线| 久久精品人人| 亚欧洲精品视频在线观看| 欧美日韩国产亚洲一区| 国产成人精品一区二区三区免费| 日韩精选在线| 蜜桃一区二区三区在线| 欧美日韩国产高清| 国产成人a视频高清在线观看| 日韩毛片视频| 免费日韩一区二区| 麻豆一区在线| 日本在线观看不卡视频| 亚洲精选91| 日韩欧美三区| 99综合视频| 久久午夜视频| 久久亚洲精品伦理| 色综合视频一区二区三区日韩 | 久久国产精品色av免费看| 欧美日韩一二三四| 久久中文亚洲字幕| 国产精品成人自拍| 麻豆久久久久久| 精品一区视频| 99精品小视频| 深夜日韩欧美| 狠狠久久伊人中文字幕| 先锋亚洲精品| 里番精品3d一二三区| 国产aⅴ精品一区二区三区久久 | 亚洲精品第一| 精品一区二区三区免费看| 激情黄产视频在线免费观看| 午夜日韩av| 国产精品最新| 波多野结衣一区| 久久国产乱子精品免费女| 国产精品久久观看| 日韩一区精品视频| 在线日韩中文| 麻豆久久久久久| 久久久久久色| zzzwww在线看片免费| 欧美专区一区二区三区| 精品国产中文字幕第一页| 欧美一级久久| 好看不卡的中文字幕| 精品视频在线观看网站| 久久国产88| 国产精品字幕| 成人羞羞视频播放网站| 日本国产欧美| 伊人久久一区| 伊人影院久久| 日韩综合在线| 成人影视亚洲图片在线| 99在线观看免费视频精品观看| 97精品国产|