🐸

清洁表格

数据与文本工具python-data-tinkerer-26-the-cleaner-table
奖励: 135 XP
|

清洁表格

Hoppy 从数据柜里抽出一张小小的 CSV 表。行和列倒是排好了,可每个格子边上还沾着灰:有的前后多了空白,有的两头挂着轻轻的脏符号,整张表看起来像“差一点就能用了”。

这正好是今天的重点:把第一章学过的字符串清理动作,真的拿来服务一份记录文件。我们不是只整理一条字符串,而是对表里的多行记录重复做同样的小清理。

一格一格会清理后,就能一行一行把表收干净

在第一章里,strip() 帮你刷过字符串边缘。现在这个动作没有变,只是使用场景更像真实记录:表里每一行都拆成几个字段后,你要对每个字段重复做同样的轻整理。

raw_cells = ["  moss compass  ", " *drawer-2* ", " keeper?? "]
clean_cells = []

for cell in raw_cells:
  clean_cells.append(cell.strip(" *?"))

print("Clean cells:", clean_cells)

这里还不是今天整道题:没有读文件,也没有重组完整 CSV 行。它只是先示范一个关键感觉——同一个清理动作,可以连续用在一组值上。

今天的任务:把 cleaner_table.csv 里的脏字段逐行擦干净

starter 已经帮你读好了 cleaner_table.csv,并把表头放进 header_line,把真正需要处理的数据行放进 dirty_rows。你的任务是把每一行拆开、清理、再重新拼成干净的 CSV 行,收进 cleaned_rows

1
先看表头和脏数据行

运行 starter,先看看表头长什么样,再看几条还没清理的数据行。你会发现每一行都还是逗号分隔的文本。

2
循环处理每一行

dirty_rows 里的每一条 row 做循环。先用 row.split(",") 拆成三个字段,再对每个字段做轻量清理。

3
用 `strip()` 把字段边缘收干净

这张小表里的脏东西都很轻:只是首尾空白和少量 *!#?。可以用 strip(" *!#?") 这种方式把它们从字段两头擦掉。

4
重组成新的干净结果行

把清理后的三个字段重新拼成一条逗号分隔的字符串,然后 appendcleaned_rows。运行后,输出里应该能看到整洁版结果。

边界先收住

今天只练“小表轻清理”:按行循环、按字段拆开、做首尾小修整、输出整理后的结果。我们不展开复杂异常行,不讲大型数据清洗,也不进入数据分析。

参考答案
点击展开
参考答案:
with open("cleaner_table.csv", "r", encoding="utf-8") as file:
  lines = file.read().splitlines()

header_line = lines[0]
dirty_rows = lines[1:]

print("Header:", header_line)
print("Dirty rows:", dirty_rows)

cleaned_rows = []

for row in dirty_rows:
  item_name, keeper_name, table_slot = row.split(",")
  clean_item_name = item_name.strip(" *!#?")
  clean_keeper_name = keeper_name.strip(" *!#?")
  clean_table_slot = table_slot.strip(" *!#?")
  cleaned_row = clean_item_name + "," + clean_keeper_name + "," + clean_table_slot
  cleaned_rows.append(cleaned_row)

print("Cleaned rows:", cleaned_rows)
高级技巧
想更进一步?点击展开

这节课最值得带走的感觉是:前面学过的字符串动作,并没有停留在“单条文本小练习”里。到了真实记录文件里,它们会一遍又一遍地出现,帮你把一张表慢慢收拾干净。

下一课,Hoppy 会继续往前走:不只是清理现成记录,还要感受普通文本和结构化记录之间其实可以互相转换。

Loading...
终端输出
Terminal
Ready to run...