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

十分鐘教會(huì)你用Python處理CSV文件

 更新時(shí)間:2022年06月11日 11:36:40   作者:程序員倉庫  
大家都知道使用csv文件可以較容易地存儲(chǔ)多行且列相同的數(shù)據(jù),便于數(shù)據(jù)的讀取與解析,也常用于自動(dòng)化測(cè)試過程中的數(shù)據(jù)參數(shù)化,下面這篇文章主要給大家介紹了關(guān)于如何利用Python處理CSV文件的相關(guān)資料,需要的朋友可以參考下

前言

在前幾年,如果你和嵌入式開發(fā)人員推薦Python,大概會(huì)是這樣一種場(chǎng)景:

A:”誒,老王,你看Python開發(fā)這么方便,以后會(huì)不會(huì)用到嵌入式設(shè)備?“

B:“別做夢(mèng)了,那玩意兒速度賊慢,肯定滿足不了性能要求…”

但近幾年,隨著半導(dǎo)體行業(yè)的迅猛發(fā)展,嵌入式處理器的性能有了很大幅度的提高。與此同時(shí),Python語言本身也在不斷優(yōu)化。因此,在嵌入式領(lǐng)域引入Python已經(jīng)成為了必然趨勢(shì)。

今天,作者就來總結(jié)一下使用Python處理物聯(lián)網(wǎng)行業(yè)中一種常見的文件格式:csv文件。

Python庫:csv

Python中集成了專用于處理csv文件的庫,名為:csv。

csv 庫中有4個(gè)常用的對(duì)象:

  • csv.reader:以列表的形式返回讀取的數(shù)據(jù)。
  • csv.writer:以列表的形式寫入數(shù)據(jù)。
  • csv.DictReader:以字典的形式返回讀取的數(shù)據(jù)。
  • csv.DictWriter:以字典的形式寫入數(shù)據(jù)。

讀取csv文件

假設(shè)現(xiàn)在要讀取的csv文件內(nèi)容如下:

可以看到,該文件的第一行表明數(shù)據(jù)類型,我們暫且稱之為header。從第2行開始,保存的是設(shè)備采集到的數(shù)據(jù)。

使用csv.reader讀取數(shù)據(jù)

# 導(dǎo)入 csv 庫
import csv

# 以讀方式打開文件
with open("data.csv", mode="r", encoding="utf-8-sig") as f:
    
    # 基于打開的文件,創(chuàng)建csv.reader實(shí)例
    reader = csv.reader(f)

    # 獲取第一行的header
    # header[0] = "設(shè)備編號(hào)"
    # header[1] = "溫度"
    # header[2] = "濕度"
    # header[3] = "轉(zhuǎn)速"
    header = next(reader)

    # 逐行獲取數(shù)據(jù),并輸出
    for row in reader:
        print("{}{}: {}={}, {}={}, {}={}".format(header[0], row[0],
                                                 header[1], row[1],
                                                 header[2], row[2],
                                                 header[3], row[3]))

程序運(yùn)行結(jié)果如下:

設(shè)備編號(hào)0: 溫度=31, 濕度=20, 轉(zhuǎn)速=1000
設(shè)備編號(hào)1: 溫度=30, 濕度=22, 轉(zhuǎn)速=998
設(shè)備編號(hào)2: 溫度=32, 濕度=23, 轉(zhuǎn)速=1005

使用csv.DictReader讀取數(shù)據(jù)

# 導(dǎo)入 csv 庫
import csv

# 打開文件
with open("data.csv", encoding="utf-8-sig", mode="r") as f:

    # 基于打開的文件,創(chuàng)建csv.DictReader實(shí)例
    reader = csv.DictReader(f)

    # 輸出信息
    for row in reader:
        print("設(shè)備編號(hào){}: 溫度={}, 濕度={}, 轉(zhuǎn)速={}".format(row["設(shè)備編號(hào)"],
                                                   row["溫度"],
                                                   row["濕度"],
                                                   row["轉(zhuǎn)速"]))

程序運(yùn)行結(jié)果如下:

設(shè)備編號(hào)0: 溫度=31, 濕度=20, 轉(zhuǎn)速=1000
設(shè)備編號(hào)1: 溫度=30, 濕度=22, 轉(zhuǎn)速=998
設(shè)備編號(hào)2: 溫度=32, 濕度=23, 轉(zhuǎn)速=1005

寫入csv文件

假設(shè)我們現(xiàn)在要?jiǎng)?chuàng)建一個(gè)csv文件,將數(shù)據(jù)保存為如下形式:

使用csv.writer寫入數(shù)據(jù)

# 導(dǎo)入 csv 庫
import csv

# 創(chuàng)建列表,保存header內(nèi)容
header_list = ["設(shè)備編號(hào)", "溫度", "濕度", "轉(zhuǎn)速"]

# 創(chuàng)建列表,保存數(shù)據(jù)
data_list = [
    [0, 31, 20, 1000],
    [1, 30, 22, 998],
    [2, 32, 33, 1005]
]

# 以寫方式打開文件。注意添加 newline="",否則會(huì)在兩行數(shù)據(jù)之間都插入一行空白。
with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f:
    
    # 基于打開的文件,創(chuàng)建 csv.writer 實(shí)例
    writer = csv.writer(f)

    # 寫入 header。
    # writerow() 一次只能寫入一行。
    writer.writerow(header_list)

    # 寫入數(shù)據(jù)。
    # writerows() 一次寫入多行。
    writer.writerows(data_list)

使用csv.DictWriter寫入數(shù)據(jù)

# 導(dǎo)入 csv 庫
import csv

# 創(chuàng)建 header 列表
header_list = ["設(shè)備編號(hào)", "溫度", "濕度", "轉(zhuǎn)速"]

# 創(chuàng)建數(shù)據(jù)列表,列表的每個(gè)元素都是字典
data_list = [
    {"設(shè)備編號(hào)": "0", "溫度": 31, "濕度": 20, "轉(zhuǎn)速": 1000},
    {"設(shè)備編號(hào)": "1", "溫度": 30, "濕度": 22, "轉(zhuǎn)速": 998},
    {"設(shè)備編號(hào)": "2", "溫度": 32, "濕度": 23, "轉(zhuǎn)速": 1005},
]

# 以寫方式打開文件。注意添加 newline="",否則會(huì)在兩行數(shù)據(jù)之間都插入一行空白。
with open("new_data.csv", mode="w", encoding="utf-8-sig", newline="") as f:
    
    # 基于打開的文件,創(chuàng)建 csv.DictWriter 實(shí)例,將 header 列表作為參數(shù)傳入。
    writer = csv.DictWriter(f, header_list)

    # 寫入 header
    writer.writeheader()

    # 寫入數(shù)據(jù)
    writer.writerows(data_list)

關(guān)于寫入,需要注意:

  • 在打開文件時(shí),需要添加newline = ""。否則,會(huì)在每2行有效內(nèi)容之間添加一行空白。
  • 如果要保存的內(nèi)容有中文,而且之后需要用Excel打開文件,那么需要選用utf-8-sig編碼。如果使用utf-8編碼,會(huì)導(dǎo)致使用Excel查看文件時(shí)中文亂碼。

總結(jié) 

到此這篇關(guān)于用Python處理CSV文件的文章就介紹到這了,更多相關(guān)Python處理CSV文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用python如何處理nc數(shù)據(jù)詳解

    利用python如何處理nc數(shù)據(jù)詳解

    目前很多數(shù)據(jù)以nc格式存儲(chǔ),下面這篇文章主要給大家介紹了關(guān)于利用python如何處理nc數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值。需要的朋友們下面來一起看看吧
    2018-05-05
  • 通過pycharm使用git的步驟(圖文詳解)

    通過pycharm使用git的步驟(圖文詳解)

    這篇文章主要介紹了通過pycharm使用git的步驟(圖文詳解),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python重命名文件并移動(dòng)到對(duì)應(yīng)文件夾

    Python重命名文件并移動(dòng)到對(duì)應(yīng)文件夾

    在日常的文件管理和處理過程中,我們可能會(huì)遇到需要將文件整理到不同文件夾中的需求,下面我們就來看看如何使用Python實(shí)現(xiàn)重命名文件并移動(dòng)到對(duì)應(yīng)文件夾吧
    2025-02-02
  • Jupyter Notebook添加代碼自動(dòng)補(bǔ)全功能的實(shí)現(xiàn)

    Jupyter Notebook添加代碼自動(dòng)補(bǔ)全功能的實(shí)現(xiàn)

    這篇文章主要介紹了Jupyter Notebook添加代碼自動(dòng)補(bǔ)全功能的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python 循環(huán)while和for in簡單實(shí)例

    python 循環(huán)while和for in簡單實(shí)例

    下面小編就為大家?guī)硪黄猵ython 循環(huán)while和for in簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • Python獲取好友地區(qū)分布及好友性別分布情況代碼詳解

    Python獲取好友地區(qū)分布及好友性別分布情況代碼詳解

    利用Python + wxpy 可以快速的查詢自己好友的地區(qū)分布情況,以及好友的性別分布數(shù)量。還可以批量下載好友的頭像,拼接成大圖。感興趣的朋友跟隨小編一起看看吧
    2019-07-07
  • Python爬蟲爬取美劇網(wǎng)站的實(shí)現(xiàn)代碼

    Python爬蟲爬取美劇網(wǎng)站的實(shí)現(xiàn)代碼

    一直在學(xué)習(xí)Python爬蟲,所以今天就心血來潮來寫了個(gè)爬蟲,抓取該網(wǎng)站上所有美劇鏈接,并保存在文本文檔中,想要哪部劇就直接打開復(fù)制鏈接到迅雷就可以下載啦
    2016-09-09
  • python?pdfplumber庫批量提取pdf表格數(shù)據(jù)轉(zhuǎn)換為excel

    python?pdfplumber庫批量提取pdf表格數(shù)據(jù)轉(zhuǎn)換為excel

    這篇文章主要為大家介紹了python使用pdfplumber庫批量提取pdf表格數(shù)據(jù)轉(zhuǎn)換為excel格式的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python實(shí)現(xiàn)寫數(shù)字文件名的遞增保存文件方法

    python實(shí)現(xiàn)寫數(shù)字文件名的遞增保存文件方法

    今天小編就為大家分享一篇python實(shí)現(xiàn)寫數(shù)字文件名的遞增保存文件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • PyTorch張量操作指南(cat、stack、split與chunk)

    PyTorch張量操作指南(cat、stack、split與chunk)

    本文深入探討PyTorch中用于調(diào)整張量結(jié)構(gòu)的四個(gè)核心函數(shù)——torch.cat、torch.stack、torch.split和torch.chunk,通過實(shí)際應(yīng)用場(chǎng)景分析和代碼演示,幫助讀者掌握它們的功能差異及適用條件,提升模型開發(fā)的靈活性與效率,需要的朋友可以參考下
    2025-04-04

最新評(píng)論

惠来县| 金门县| 镇雄县| 犍为县| 济阳县| 富阳市| 白水县| 德安县| 公主岭市| 锦州市| 沂南县| 广德县| 茂名市| 密山市| 建阳市| 海门市| 临安市| 库尔勒市| 盘锦市| 寻甸| 乐亭县| 旺苍县| 绍兴市| 晋宁县| 扎兰屯市| 昭通市| 徐水县| 环江| 武义县| 郎溪县| 大渡口区| 清原| 佛坪县| 元阳县| 梓潼县| 吉首市| 红河县| 黄平县| 黄龙县| 武穴市| 昌邑市|