📦 Python 自學筆記第 8 集:資料結構進化版(JSON、CSV、自製小資料庫)

更新 發佈閱讀 6 分鐘

你的資料越來越多,list 和 dict 有點不夠用了? 別擔心,這一集我們來學會「怎麼把資料存得更漂亮、讀得更有效率」。


1️⃣ JSON 是什麼?為什麼大家都愛它?

JSON(JavaScript Object Notation)是一種常見的「資料交換格式」, 它長得很像 Python 的 dict,也能存 list,而且跨平台都能讀得懂,超萬用。

📌 適合存「巢狀資料」或「設定檔」,例如人物角色、產品資訊、聊天記錄等。

✅ 寫入 JSON 檔

import json

person = {"name": "Joe", "age": 7, "hobbies": ["reading", "soccer"]}

with open("data.json", "w", encoding="utf-8") as f:
json.dump(person, f, ensure_ascii=False, indent=2)

🔽 執行後會產生漂亮的 JSON 檔,內容像這樣:

{
"name": "Joe",
"age": 7,
"hobbies": [
"reading",
"soccer"
]
}

✅ 讀取 JSON 檔

with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
print(loaded["name"])

🔽 輸出:

Joe


2️⃣ CSV 表格:像 Excel 的好朋友

CSV(Comma-Separated Values)是一種用逗號分隔欄位的文字格式, 你可以把它想像成「純文字版的 Excel」。非常適合用來儲存名單、成績表、帳務資料。

範例內容:

姓名,年齡,分數
Joe,7,88
May,8,92

✅ 讀取 CSV

import csv

with open("grades.csv", newline="", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)

🔽 輸出:

['姓名', '年齡', '分數']
['Joe', '7', '88']
['May', '8', '92']

✅ 寫入 CSV

with open("grades.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["姓名", "年齡", "分數"])
writer.writerow(["Joe", 7, 88])
writer.writerow(["May", 8, 92])

🔽 執行後會產出一個 grades.csv,可以用 Excel 開啟!


3️⃣ 自製小資料庫:不學 SQL 也能存資料

想存使用者紀錄、遊戲狀態或筆記內容,又還不想學 SQL? 你可以用 Python 的 dict 搭配 json 檔案,自製小型資料庫:

import json

# 模擬資料庫
data = {}
data["joe"] = {"score": 88, "age": 7}

# 儲存
with open("db.json", "w", encoding="utf-8") as f:
json.dump(data, f)

# 讀回來使用
with open("db.json", "r", encoding="utf-8") as f:
db = json.load(f)
print(db["joe"]["score"])

🔽 輸出:

88

🔸「db.json 就像一個模擬資料庫」,並說明如何透過 json.load() 將資料取回並操作。

🔸這樣你就可以把資料「記起來」,下次開啟程式還能繼續使用!

✅ 如何新增或修改資料庫內容

# 新增一筆使用者資料
db["may"] = {"score": 92, "age": 8}

# 修改已存在使用者的分數
db["joe"]["score"] = 90

# 刪除使用者資料
if "may" in db:
del db["may"]

# 列出所有使用者與分數
for user, info in db.items():
print(f"{user} 的分數是 {info['score']}")

# 儲存回資料庫檔案
with open("db.json", "w", encoding="utf-8") as f:
json.dump(db, f, ensure_ascii=False, indent=2)

🔽 說明:

  • 你可以像操作 dict 一樣新增 key 或修改內部欄位,然後再用 json.dump() 寫回檔案,達成「資料庫更新」的效果。
  • del db["may"] 可以刪除指定使用者資料(記得先檢查是否存在)
  • db.items() 讓你能走訪整個資料庫,列出每個使用者的資訊
  • 最後仍需使用 json.dump() 把資料存回檔案中
  • del db["may"] 可以刪除指定使用者資料(記得先檢查是否存在)
  • db.items() 讓你能走訪整個資料庫,列出每個使用者的資訊
  • 最後仍需使用 json.dump() 把資料存回檔案中python


4️⃣ 小結:我該用哪一種?

raw-image


留言
avatar-img
留言分享你的想法!
avatar-img
Dolly的奇妙育兒之旅
18會員
127內容數
Dolly 是個家有亞斯哥和過動妹的媽媽 為了記得那些奇妙的育兒真實故事 決定把我(Dolly)和大亞(爸爸)、端端(亞斯哥)和波妞(過動妹)那些日子發生的事寫成部落格 一串感恩又心累、感謝又荒謬的心路歷程紀錄
2025/07/11
Python 提供了強大的 turtle 模組,這是一個讓你可以在畫布上操作一隻「烏龜」來繪製各種圖形的工具。它不僅能幫助學習編程,還能輕鬆創建動畫、圖形及互動式遊戲。無論是數學家、藝術家,還是對編程感興趣的你,都可以從這個簡單又有趣的工具中獲得樂趣。
Thumbnail
2025/07/11
Python 提供了強大的 turtle 模組,這是一個讓你可以在畫布上操作一隻「烏龜」來繪製各種圖形的工具。它不僅能幫助學習編程,還能輕鬆創建動畫、圖形及互動式遊戲。無論是數學家、藝術家,還是對編程感興趣的你,都可以從這個簡單又有趣的工具中獲得樂趣。
Thumbnail
2025/07/10
lambda 函式適合快速做排序、過濾、計算——尤其搭配 sorted(),能縮減複雜的程式碼。
Thumbnail
2025/07/10
lambda 函式適合快速做排序、過濾、計算——尤其搭配 sorted(),能縮減複雜的程式碼。
Thumbnail
2025/07/09
一段常用的流程,我們希望可以「取個名字」,以後一行就呼叫整段邏輯,這就是函式(function)
Thumbnail
2025/07/09
一段常用的流程,我們希望可以「取個名字」,以後一行就呼叫整段邏輯,這就是函式(function)
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
我們在學習kafka的過程中最不習慣的就是不管什麼樣的資料, 在kafka的傳輸過程都會是binary的資料格式, 因此我們在撰寫程式的過程中並不是那麼的直觀, 必須將資料從float、int…資料型態轉型成binary才能順利傳送, 那麼基於這樣的前提之下, python這套程式語言可以怎麼做
Thumbnail
我們在學習kafka的過程中最不習慣的就是不管什麼樣的資料, 在kafka的傳輸過程都會是binary的資料格式, 因此我們在撰寫程式的過程中並不是那麼的直觀, 必須將資料從float、int…資料型態轉型成binary才能順利傳送, 那麼基於這樣的前提之下, python這套程式語言可以怎麼做
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News