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

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

Python如何讀取、寫入CSV數據

瀏覽:99日期: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久久,三上悠亚国产精品一区二区三区
女人天堂亚洲aⅴ在线观看| 视频一区视频二区在线观看| 在线精品一区二区| 尤物精品在线| 欧美粗暴jizz性欧美20| 欧美日韩在线播放视频| 亚洲天堂成人| 亚洲综合欧美| 91精品尤物| 麻豆精品国产91久久久久久| 91精品尤物| 国产成人精品一区二区三区视频 | 视频在线观看一区| 免费美女久久99| 欧美日韩网址| 日韩1区2区| 婷婷成人基地| 亚洲tv在线| 高清精品久久| 三级一区在线视频先锋| 在线精品一区| 水蜜桃久久夜色精品一区| 精品一区毛片| 欧美日韩夜夜| 九九在线精品| 国产毛片精品| 五月综合激情| 精品日韩在线| 色综合视频一区二区三区日韩| 国产精品日本一区二区三区在线| 欧美sss在线视频| 日韩三级精品| 欧美日韩精品一区二区视频| 日韩精品高清不卡| 秋霞影视一区二区三区| 国产视频一区三区| 久久精品五月| 一区二区三区四区日韩| 国产色综合网| 精品视频在线你懂得| 亚洲一区亚洲| 欧美gv在线| 麻豆精品久久久| 天海翼精品一区二区三区| 99久久精品国产亚洲精品| 久久国产欧美日韩精品| 免费看日韩精品| 国产一区二区精品| 久久国产免费| 日韩国产一区| 日韩中文字幕| 老牛影视一区二区三区| 九九在线精品| 亚洲夜间福利| 四虎4545www国产精品 | 97se亚洲| 日韩欧美中文字幕一区二区三区| 91超碰国产精品| 成人在线视频免费看| 国产黄色一区| 国产精品网在线观看| 欧美一区久久| 日韩国产一区二| 欧美日韩亚洲一区三区| 日韩精品一区二区三区中文字幕| 西西人体一区二区| 亚洲久久视频| 欧美一级二级视频| 国产精品66| 精品一区电影| 国产高潮在线| 免费污视频在线一区| 欧美搞黄网站| 国产一在线精品一区在线观看| 在线视频观看日韩| 亚洲欧美成人综合| 亚洲精品成人一区| 国产日产精品_国产精品毛片 | 国产一区二区三区黄网站| 国产精品蜜芽在线观看| 欧美日韩在线二区| 视频一区视频二区中文| 免费在线成人网| 麻豆国产欧美一区二区三区| 婷婷激情一区| 视频一区在线视频| 国模精品一区| 午夜在线视频观看日韩17c| 日韩精品欧美精品| www.com.cn成人| 一区二区91| 91日韩欧美| 只有精品亚洲| 日韩国产一区二区三区| 日本不卡高清| 欧美精品日日操| 欧美私人啪啪vps| 欧产日产国产精品视频| 亚洲精品一区二区在线播放∴| 精品久久久网| 日韩欧美中文字幕一区二区三区| 色在线中文字幕| 国产精品qvod| 中文字幕av亚洲精品一部二部| 日韩1区2区| 国产精品久久久久久久久免费高清 | 播放一区二区| 日韩精品免费视频一区二区三区 | 视频一区中文| 国产一区二区精品久| 亚洲精品亚洲人成在线观看| 久久久成人网| 福利一区视频| 国产高清日韩| 国产精品极品在线观看| 久久午夜影视| 一区在线免费| 成人va天堂| 狠狠久久伊人| 日本亚洲视频在线| 免费成人在线视频观看| 在线成人直播| 韩日一区二区三区| 久久青青视频| 超级白嫩亚洲国产第一| 国产精品黑丝在线播放| 另类小说一区二区三区| 国产一精品一av一免费爽爽| 亚洲人成亚洲精品| 日韩精品91亚洲二区在线观看| 蜜臀精品一区二区三区在线观看| 免费视频国产一区| 在线亚洲观看| 综合激情一区| 亚洲黄色影院| 蜜桃久久精品一区二区| 久久亚洲电影| 日韩va亚洲va欧美va久久| 日韩区一区二| 欧美激情麻豆| 国产欧美一区二区三区精品酒店 | 欧美.日韩.国产.一区.二区| 亚洲不卡av不卡一区二区| 999国产精品| 久久亚洲美女| 国产亚洲久久| 久久99精品久久久野外观看| 91亚洲成人| 视频在线在亚洲| 国产一区二区三区四区五区传媒| 成人久久一区| 日韩精品亚洲专区| 在线视频观看日韩| 国产精品xxx在线观看| 国产专区一区| 国产精品1区在线| 国产精品婷婷| 欧美91在线|欧美| 午夜在线视频一区二区区别| 久久久久久久欧美精品| 97久久超碰| 色综合五月天| 综合激情婷婷| 亚洲午夜在线| 91国内精品| 日韩亚洲在线| 国产精区一区二区| 欧美日韩精品一区二区视频| 国产精品久久亚洲不卡| 欧美日韩国产v| 午夜性色一区二区三区免费视频| 日韩一区二区三区精品| 免费精品国产的网站免费观看| 日日摸夜夜添夜夜添国产精品| 精品国产91| 亚洲精品麻豆| 红桃视频国产精品| 国产精品一区二区av日韩在线| 日韩免费久久| 日韩精彩视频在线观看| 91成人精品| 国产成人精品福利| 美女日韩在线中文字幕| 国产精品一区二区美女视频免费看 | 久久亚洲影院| 亚洲成人av观看| 国产欧美精品久久| 国产欧美午夜| 玖玖精品视频| 午夜国产欧美理论在线播放 | 老鸭窝毛片一区二区三区| 欧美一级专区| 另类国产ts人妖高潮视频| 欧美日韩在线网站| 久久免费视频66| 伊人久久亚洲| 日韩av字幕| 97成人在线| 欧美一区91| 成人亚洲一区二区|