答案页 · 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. 2正确答案
  2. a
  3. b
  4. 1

答案: 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 道题。

练习本课