答案頁 · 12 道題

Python CSV 檔案練習答案

本頁彙整 Python CSV 檔案 的 12 道練習。先做練習頁,再回到這裡核對準確答案和原因。

快速答案

本答案頁包含 Python CSV 檔案 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。

答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。

01 · 選擇題

csv.DictReader 會把每一行回傳成什麼?

  1. 整數索引
  2. 以表頭為鍵的字典正確答案
  3. 單個字串
  4. 包含所有列的列表

答案: 以表頭為鍵的字典

為什麼: 第一行提供欄位名,之後每一行變成映射。

02 · 選擇題

writer.writerow 會做什麼?

  1. 讀取一行
  2. 關閉檔案
  3. 寫入一行並添加行結束符正確答案
  4. 排序所有行

答案: 寫入一行並添加行結束符

為什麼: 每次呼叫向輸出流寫入一條記錄。

03 · 選擇題

quoting=csv.QUOTE_ALL 會做什麼?

  1. 給欄位排序
  2. 只給數字加引號
  3. 給每個欄位加引號正確答案
  4. 刪除所有引號

答案: 給每個欄位加引號

為什麼: QUOTE_ALL 會給每個欄位加引號,即使欄位裡沒有分隔符。

04 · 選擇題

這段程式列印出什麼?

import csv
from io import StringIO
rows = list(csv.reader(StringIO("a,b\n1,2\n")))
print(rows[1][1])
  1. 1
  2. b
  3. 2正確答案
  4. a

答案: 2

為什麼: 第二行是 ['1', '2'],下標 1 是字串 2。

05 · 填空題

補全模組匯入。

import ____
from io import StringIO

答案: csv

為什麼: csv 模組提供讀取器和寫入器。

06 · 填空題

補全使用表頭名稱的讀取器。

import csv
from io import StringIO
rows = list(csv.____(StringIO("name,score\nAda,92\n")))

答案: DictReader

為什麼: DictReader 把每一行映射成字典。

07 · 填空題

補全寫入一行的方法。

import csv
from io import StringIO
buffer = StringIO()
writer = csv.writer(buffer)
writer.____(["a", "b"])

答案: writerow

為什麼: writerow 寫入一條記錄。

08 · 填空題

補全給所有欄位加引號的模式。

import csv
from io import StringIO
buffer = StringIO()
writer = csv.writer(buffer, quoting=csv.____)

答案: QUOTE_ALL

為什麼: QUOTE_ALL 是全欄位加引號的常量。

09 · 輸出預測

程式碼的輸出結果是什麼?

import csv
from io import StringIO
print(next(csv.reader(StringIO("a,b\n1,2\n"))))

答案: ['a', 'b']

為什麼: 第一行是兩個表頭字串組成的列表。

10 · 輸出預測

螢幕上會顯示什麼?

import csv
from io import StringIO
rows = list(csv.DictReader(StringIO("name,score\nAda,92\n")))
print(rows[0]["score"])

答案: 92

為什麼: Ada 的 score 欄位是字串 92。

11 · 輸出預測

這段程式碼會輸出什麼?

import csv
from io import StringIO
buffer = StringIO()
writer = csv.writer(buffer, quoting=csv.QUOTE_ALL)
writer.writerow(["a,b", "c"])
print(buffer.getvalue().strip())

答案: "a,b","c"

為什麼: QUOTE_ALL 給兩個欄位都加引號,包括含逗號的那個。

12 · 輸出預測

執行結果是什麼?

import csv
from io import StringIO
buffer = StringIO()
writer = csv.writer(buffer)
writer.writerow(["a", "b"])
print(buffer.getvalue().strip())

答案: a,b

為什麼: writerow 用逗號分隔寫入兩個欄位。

先試一遍題目

打開 Python CSV 檔案 練習頁,用即時回饋回答同樣的 12 道題。

練習本課