模式踪迹
Hoppy 走进一条昏暗走廊,墙上钉着三张急匆匆留下的线索牌。它们乍看有点乱,但仔细一看,每一张都像在重复同一种小形状。
这就是文本侦探的第一步:不要急着说“数据太乱了”,先看看里面有没有重复模式。只要能先看出规律,后面的拆解就会轻很多。
先找重复形状,再决定怎么拆
有些乱文本并不是真的毫无结构,它只是没有排成整齐表格而已。比如几段短线索可能都在重复 marker:place 这种形状。你一旦看出来,就能对每个片段用同样的动作。
bird:oak | bird:pine | bird:elm
pieces = "bird:oak | bird:pine | bird:elm".split(" | ")
marker = pieces[0].split(":")[0]
first_place = pieces[0].split(":")[1]
print(marker)
print(first_place)
这个示例只是示范“先发现重复形状,再用同一种拆法”的感觉,不是今天 starter 的原题答案。真正任务里,你会在另一条线索上把这个动作完整做一遍。
今天的任务:从重复片段里收出一条路线
starter 里已经给你一条 trail_note,并先帮你拆出了 fragments。你要继续利用重复的 marker:place 形状,找出共同标记、三个地点,再把结果收进 trail_report。
运行 starter,看一下 trail_note 和 fragments。先不要急着写太多代码,先确认每个片段都像 某个标记:某个地点。
用 fragments[0] 先取出前半段和后半段。前半段能告诉你共同的 shared_marker,后半段则是一个地点。
用同样的 split(":") 动作继续拿到 second_place 和 last_place,再把三个地点排成一个 trail_places 列表。
最后用这些值构造一个字典 trail_report。这一步很像真正的文本处理:先看规律,再逐个拆开,最后收成更清楚的结构。
今天不讲正则,不做复杂日志,也不谈抽象理论。我们只练一个很实际的起手动作:看出重复形状,然后用同一种方式拆解。
参考答案点击展开点击收起
trail_note = "torch:north | torch:east | torch:south"
print("Trail note:", trail_note)
fragments = trail_note.split(" | ")
print("Fragments:", fragments)
shared_marker = fragments[0].split(":")[0]
first_place = fragments[0].split(":")[1]
second_place = fragments[1].split(":")[1]
last_place = fragments[2].split(":")[1]
trail_places = [first_place, second_place, last_place]
trail_report = {
"shared_marker": shared_marker,
"first_place": first_place,
"second_place": second_place,
"last_place": last_place,
"trail_places": trail_places,
}
print("Shared marker:", shared_marker)
print("First place:", first_place)
print("Second place:", second_place)
print("Last place:", last_place)
print("Trail places:", trail_places)
print("Trail report:", trail_report)高级技巧想更进一步?点击展开点击收起
这节课最重要的不是记住某个语法点,而是开始有一个文本侦探直觉:先看文本里有没有重复形状,再决定下一步怎么拆。
下一课你会把这个直觉带到更像现实世界的日志样文本里,继续练“先分片,再拿重点”。