Skip to content

Instantly share code, notes, and snippets.

@diaowinner
Created December 29, 2024 12:45
Show Gist options
  • Select an option

  • Save diaowinner/315d247affcf90caeb5a697a8c89ecbd to your computer and use it in GitHub Desktop.

Select an option

Save diaowinner/315d247affcf90caeb5a697a8c89ecbd to your computer and use it in GitHub Desktop.
五笔查词
#!/usr/bin/env python3
# 五笔查词 by DWN <https://dwn.dwnfonts.cc>
# Licensed under BSD-3-Clause
# cod'dte: 话说机器人可不可以整个五笔造词功能,给词自动输出五笔码
# 所以这就是了。入门级教程,猴子都能看懂。
# 另外我不用五笔。另外中文关键字怎么你了。
class 字表: # 首先让我们新建一个类。至于为啥不面向函数或者别的,因为他优雅啊(大雾
def __init__(self, 源数据) -> None:
# 初始化源数据,这样就可以拿词典换字表了!
self.源数据 = 源数据 # 虽然这脚本没用过,但是源数据咱还是得读取的嘛。
def 查词(self, 词): # 终于到了爷最喜欢的查词环节
编码 = [self.源数据[汉字] for 汉字 in 词]
# [f(x) for x in b] 就是把 b 的每一项掏出来处理了再放进去。
# 通过这么整编码就是类似于 ["ynii", "fqpv"] 这种形式。
match len(编码): # 看编码有多长
case 1: # 一个字(这是词吗?)
return 编码[0] # 显然这不是词。不能直接空降毕竟这是一列表呢。
case 2: # 二字词: 取两个字的前两个五笔码
return 编码[0][0:2] + 编码[1][0:2]
case 3: # 三字词: 取第一第二个字的一个五笔码, 第三个字的二个五笔码
return 编码[0][0] + 编码[1][0] + 编码[2][0:2]
case _: # 四字及以上: 取前三个字的一个五笔码和最后一个字的一个五笔码
return 编码[0][0] + 编码[1][0] + 编码[2][0] + 编码[-1][0]
# 使用例
if __name__ == "__main__": # 导入的时候出现这使用例太傻逼了,所以这么设。
源数据 = {
# 这里只提供部分数据,因为数据太多不简洁。
# 本站就有许多五笔字表呢:https://www.google.com/search?q=%E4%BA%94%E7%AC%94+site%3Agithub.com&udm=14
"永": "ynii",
"远": "fqpv",
"恶": "gogn",
"作": "wthf",
"剧": "ndjh",
"从": "wwy",
"无": "fqv",
"到": "gcfj",
"有": "def",
}
示例字表 = 字表(源数据) # 一次导入可以用三次呢,这不就是赚到?
print(示例字表.查词("永远"))
print(示例字表.查词("恶作剧"))
print(示例字表.查词("从无到有"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment