python编写程序输出诗句_Python⽂本处理简介:44⾏代码编写⼀个简单的隐藏诗⽣成。。。
想必最近⼤家家庭⾥最近都会看到这么⼀张图:
来写⼀个简单的藏头诗⽣成器。
迎合最近⼤家在家的⼼情,以下是效果图:
其实这件事就是先观察数据:
数据是这个样⼦的,句⼦长短不⼀,有作者,编号信息,标题和本⽂。那么我们需要做的事情就是,统⼀诗句横向长度,以及顺利遍历所有的数据。所以问题转移到,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~~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论