python成语填空_python实现成语找一找

网上经常有些从N个字里面找成语的小游戏,那么怎么用python把成语组合找出来呢?

准备词典

从网上下载一个成语的词典、每行一个成语,保存成 word.txt。

代码实现

1.构建一个首字-成语的字典模型 predict.model

import pickle

from pathlib import Path

seq = Path('word.txt').read_text().split('\n')

predict = {}

for word in seq:

pre = list(word)[0]

predict.setdefault(pre, [])

predict[pre].append(word)

with open('predict.model', 'wb') as f:

f.write(pickle.dumps(predict))

2.实现成语查找的类

import pickle

class Idiom(object):

def __init__(self, model_path='predict.model'):

self.predict = pickle.loads(Path(model_path).read_bytes())

def find(self, text):

# 生成单字集合

chas = set(text)

for cha in chas:

# 获取单字对应的备选成语

words = self.predict.get(cha, [])

if not words:

continue

for word in words:

# 检查备选成语的字是否在单字集合中

for i in word:

if i not in chas:

break

# for循环执行完即备选成语由单字集合中的字组成

else:

print(word)

3.现在就可以开始找成语啦

# 网上一般的成语游戏的备选字比这里少很多

s = '''月光如流水一般,静静地泻在这一片叶子和花上。

薄薄的青雾浮起在荷塘里。

叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。

虽然是满月,天上却有一层淡淡的云,所以不能朗照;

但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。

月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;

弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。

塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀玲上奏着的名曲。''')

obj = Idiom()

obj.find(s)

找出来的成语有:

一天一地、别有风味、别有天地、恰到好处、落花流水、水流花落、

水天一色、流水落花、风轻云淡、月黑风高、高高在上、云淡风轻、

能上能下、不上不落、不上不下、不以为然、不差上下、名高天下、

名满天下、天下为笼、天高地下、参差不一

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值