标签猎人
Hoppy 在侦查墙前停下脚步,看到一张被风吹皱的混合便签:句子、提醒、方向全都挤在一起,只有几处短短的小标签被方括号夹了出来。
这正是文本侦探常遇到的场景:正文很乱,但信号并没有消失。只要你能看出标签从哪里开始、到哪里结束,就能先把这些短线索揪出来。
标签不是 parser,它只是被边界夹住的信号
有些混合文本并不需要复杂解析。只要标签是扁平的,而且边界很明显,比如被 [ 和 ] 包起来,你就可以先沿着这些边界下手。
sample_note = "bench note [amber] ivy path [quiet]"
parts = sample_note.split("[")
first_tag = parts[1].split("]")[0]
second_tag = parts[2].split("]")[0]
print(first_tag)
print(second_tag)
这个示例只是演示“看到边界,就先把标签拿出来”的动作,不是今天 starter 的原题答案。真正的任务里,你会在另一张混合便签里做同样的事,并把结果整理起来。
今天的任务:从混合便签里揪出三个标签
starter 已经给你一张 mixed_note,并先帮你做了 tag_pieces = mixed_note.split("[")。你要继续根据 [ 和 ] 的边界,提取 first_tag、second_tag 和 last_tag,再把它们整理成 found_tags、tag_count 和 tag_report。
运行 starter,观察 mixed_note 和 tag_pieces。注意:普通文字会留在前面的片段里,真正被方括号包住的标签内容,藏在后面的几个片段开头。
用 tag_pieces[1] 先看第一个标签片段,再用 split("]") 把右边界切开。这样你就能拿到方括号里面的内容。
对第二个和最后一个标签片段重复同样的边界拆法,得到 second_tag 和 last_tag,再把三个标签排成 found_tags。
最后别把标签散着放。用 tag_count 和几个标签值构造一个 tag_report 字典,让混合文本里的信号变成更清楚的结构。
我们今天不进入 HTML / XML,不讨论嵌套标签,也不讲正则。重点只是:当文本里有平面的边界信号时,你可以先把短标签提取出来。
参考答案点击展开点击收起
mixed_note = "Scout wall: lantern low [glow] bridge cracked [repair] route hidden [west]"
print("Mixed note:", mixed_note)
tag_pieces = mixed_note.split("[")
print("Tag pieces:", tag_pieces)
first_tag = tag_pieces[1].split("]")[0]
second_tag = tag_pieces[2].split("]")[0]
last_tag = tag_pieces[3].split("]")[0]
found_tags = [first_tag, second_tag, last_tag]
tag_count = len(found_tags)
tag_report = {
"first_tag": first_tag,
"second_tag": second_tag,
"last_tag": last_tag,
"found_tags": found_tags,
"tag_count": tag_count,
}
print("First tag:", first_tag)
print("Second tag:", second_tag)
print("Last tag:", last_tag)
print("Found tags:", found_tags)
print("Tag count:", tag_count)
print("Tag report:", tag_report)高级技巧想更进一步?点击展开点击收起
这节课真正要建立的,不是“方括号语法”,而是一个更重要的直觉:混合文本里常常藏着结构信号,而这些信号往往有清楚的边界。
下一课你会继续做文本侦探,但这次重点不是提取标签,而是判断 split / replace / search 各自更适合处理什么问题。