300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python编写程序输出诗句_Python文本处理简介:44行代码编写一个简单的隐藏诗生成器 p

python编写程序输出诗句_Python文本处理简介:44行代码编写一个简单的隐藏诗生成器 p

时间:2019-07-23 10:51:27

相关推荐

python编写程序输出诗句_Python文本处理简介:44行代码编写一个简单的隐藏诗生成器 p

想必最近大家家庭群里最近都会看到这么一张图:

一惊,这什么玩意儿???后来一搜会发现里面不同的诗句来自于不同的古诗,嘛,这不是很好玩的一件事情吗?这次我们使用Github的唐诗宋词dataset:/chinese-poetry/chinese-poetry

来写一个简单的藏头诗生成器。

迎合最近大家在家的心情,以下是效果图:

其实这件事就是先观察数据:

数据是这个样子的,句子长短不一,有作者,编号信息,标题和本文。那么我们需要做的事情就是,统一诗句横向长度,以及顺利遍历所有的数据。所以问题转移到,step1:遍历文件夹数据和json数据的导出 step2:抽取每句诗第一个字做匹配 step3:根据所需诗句长度来当匹配的条件 step4:随机抽取同样头文字的诗句 step5:按照目标语句顺序输出 step6:针对数据库中不对应汉字的情况做异常处理。

所以首先就是遍历所有的json文件了,这个每个人操作不同

我选择使用 os.listdir所以读目标文件下所有的文件就是:

def getfileFromfilter(rootdir):

list = os.listdir(rootdir)

ReturnList=[]

for i in range(0, len(list)):

if list[i]!='.DS_Store':

path = os.path.join(rootdir, list[i])

ReturnList.append(path)

return (ReturnList)

rootdir下所有文件名会以list的形式返回。

接下来就是json文件的读入了

咱们

import json

然后

f=open(eachJson ,'r',encoding='utf-8')

dict=json.load(f)

这样所有的数据就会变成dict词典形式

建立一个用于存筛选过的句子的字典:

sentencelist={}

然后开始筛选我们要的诗句,

我们找到属性名是

['paragraphs'](诗句)

所以直接用这个做匹配:

try:

f=open(eachJson ,'r',encoding='utf-8')

dict=json.load(f)

for each in dict:

for eachsentence in each['paragraphs']:

if len(eachsentence)==weight:

for eachCharacter in text:

if eachsentence[0] == eachCharacter:

sentencelist[each['author'],each['title'],eachsentence]=eachCharacter

except:continue

这里weight是诗句长度,可以是12也可以是16,8言就是16,先用长度来筛选后再匹配每句第一个词 。eachsentence 是句子,那么eachsentence 【0】自然就是第一个文字。为了方便查找,匹配后所有的诗句作为key,对应的头文字作为value存进sentencelist这个词典。存出来是这样的:(这里我还存了['author'],['title']以方便以后使用)

因为key不能重复这个大家都知道。

for eachcha in text:

txt=[]

for key, value in sentencelist.items():

if value==eachcha:

txt.append(key)

print(random.choice(txt)[2])

然后最后再扫一遍用户要的字符串做randomlist抽选就ok了!

整个过程非常非常简单,甚至这个版本有很多冗余的操作,仅供初学者参考!!!转载留地址,github期待star~~

python编写程序输出诗句_Python文本处理简介:44行代码编写一个简单的隐藏诗生成器 python 入门 藏头诗...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。