成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Python如何讀取、寫入CSV數據

瀏覽:76日期: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 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲一卡久久| 久久精品国产色蜜蜜麻豆| 日本免费在线视频不卡一不卡二| 亚洲激情影院| 国产精品欧美一区喷水| 99精品桃花视频在线观看| 日韩午夜小视频| 久久99精品国产麻豆婷婷洗澡| 91福利视频网站| 三级久久三级久久| 久久在线精品| 伊人夜夜躁av伊人久久| 国内视频一区| 中文字幕一区二区三区不卡| 国产精品www994| 国产精品美女久久久久久久| 欧美日韩亚洲三区| 日韩电影在线看| 久久久久国产精品一区二区| 性感美女久久精品| 色婷婷综合在线| 亚洲福利av| 亚洲国产欧美日韩另类综合 | 在线观看av不卡| 蜜桃91丨九色丨蝌蚪91桃色| 在线精品国精品国产尤物884a| 久久成人久久爱| 日韩一区二区三区三四区视频在线观看| 国产剧情av麻豆香蕉精品| 日韩一区二区电影在线| 国产**成人网毛片九色| 久久午夜电影网| 欧美日韩爆操| 一区二区三区色| 一本久久a久久精品亚洲| 另类小说综合欧美亚洲| 欧美日韩久久不卡| 国产·精品毛片| 欧美国产精品v| 亚洲精品资源| 日韩黄色在线观看| 欧美日韩国产精品成人| 国产jizzjizz一区二区| 国产欧美日韩三级| 国产欧美日韩| 美女网站一区二区| 日韩一区二区精品在线观看| 91女人视频在线观看| 综合色中文字幕| 色一区在线观看| 国产很黄免费观看久久| 久久奇米777| 激情亚洲成人| 天堂精品中文字幕在线| 51精品秘密在线观看| av色综合久久天堂av综合| 国产精品午夜在线| 国产精品尤物| 狠狠色丁香久久婷婷综| 2020国产成人综合网| 亚洲国产精品久久久久婷婷老年| 偷窥国产亚洲免费视频| 欧美一区日韩一区| 欧美一区网站| 亚洲成精国产精品女| 欧美精品1区2区| 国外成人免费视频| 天天综合天天做天天综合| 3d动漫精品啪啪1区2区免费| 欧美精品首页| 亚洲成人1区2区| 日韩欧美电影一二三| 激情偷拍久久| 激情欧美一区二区| 国产蜜臀97一区二区三区| 国产精品久久一区二区三区| 国产一区二区在线电影| 国产精品久久久久久久久免费樱桃| 久久久噜噜噜久久狠狠50岁| 成人精品小蝌蚪| 一区二区三区91| 日韩午夜电影av| 国产日韩欧美三级| 国产成人午夜视频| 亚洲精品日韩专区silk| 91精品国产麻豆国产自产在线| 亚洲高清123| 国产真实精品久久二三区| 亚洲欧洲日产国码二区| 欧美日韩亚洲综合在线| 国产精品www.| 韩国三级中文字幕hd久久精品| 中文一区在线播放| 欧美日韩一区二区三区四区| 国产精品hd| 国产一区二区美女| 亚洲精品日韩综合观看成人91| 91精品国产欧美一区二区| 一区二区国产日产| 丁香啪啪综合成人亚洲小说| 一区二区三区不卡在线观看| 日韩一级视频免费观看在线| 国产精品久久久久久久免费软件| 高清不卡一区二区在线| 亚洲二区在线观看| 久久精品人人做| 欧美午夜一区二区| 在线观看成人av| 国产精华液一区二区三区| 亚洲自拍偷拍av| 久久嫩草精品久久久久| 欧美专区亚洲专区| 亚洲裸体视频| 99国产精品久久| 久久爱另类一区二区小说| 亚洲美女视频在线| 精品免费国产一区二区三区四区| 久久精彩视频| 欧美日韩免费高清| 国产在线乱码一区二区三区| 一区二区三区中文字幕在线观看| 精品国精品自拍自在线| 欧美性色黄大片手机版| 在线视频精品| 91麻豆文化传媒在线观看| 国产做a爰片久久毛片| 午夜亚洲国产au精品一区二区| 国产精品天天看| 精品久久久影院| 欧美日韩在线一区二区| 国产精品丝袜xxxxxxx| 91碰在线视频| 成人综合日日夜夜| 经典三级视频一区| 日韩精品视频网站| 亚洲影院免费观看| 亚洲欧美在线观看| 国产午夜亚洲精品不卡| 日韩欧美亚洲国产另类| 欧美网站大全在线观看| 亚洲一区二区动漫| 亚洲激情国产| 国产精品成人一区二区网站软件 | 暖暖成人免费视频| 国产精品一区二区你懂的| 青青草成人在线观看| 亚洲国产精品影院| 亚洲伦理在线免费看| 国产精品毛片久久久久久| 久久久久久99精品| 欧美成人欧美edvon| 91精品婷婷国产综合久久竹菊| 欧美亚洲国产一区二区三区va | 精品一区免费av| 免费高清视频精品| 日韩制服丝袜av| 亚洲狠狠爱一区二区三区| 亚洲欧洲制服丝袜| 亚洲欧洲中文日韩久久av乱码| 中文在线免费一区三区高中清不卡| 久久女同精品一区二区| 久久久久久久久久久久电影| 精品国产欧美一区二区| 精品久久国产97色综合| 欧美xxxxxxxx| 久久蜜臀中文字幕| 久久久久久久精| 欧美成人精品1314www| 日韩视频国产视频| 欧美一级免费观看| 51精品视频一区二区三区| 欧美日韩三级一区| 欧美网站一区二区| 7777精品久久久大香线蕉| 欧美丰满高潮xxxx喷水动漫| 欧美精品久久99| 欧美一级在线免费| 欧美一区二区三区播放老司机| 欧美一区二区三区思思人| 欧美一卡二卡在线观看| 欧美一区二区三区喷汁尤物| 欧美一级久久久| 欧美r级电影在线观看| 精品福利二区三区| 久久综合色播五月| 国产视频一区在线播放| 欧美高清在线视频| 中文字幕一区二区三区乱码在线| 亚洲天堂网中文字| 亚洲第一狼人社区| 蜜桃一区二区三区四区| 国产综合色在线视频区| 国产成人a级片| 成人一区二区三区视频| 成人h版在线观看| 欧美激情第六页| 亚洲国产精品综合| 免费日韩一区二区| 色丁香久综合在线久综合在线观看| 欧美体内she精高潮|