Python制作藏头诗⽣成器(超详细)Python 制作藏头诗⽣成器(超详细)
获取数据
⽹上有⼀位⼤神收集了好⼏万条古诗,我们通过这个来⽣成藏头诗
⽂件下载链接(Github):
然后打开⽂件夹⾥⾯会有很多.json⽂件,然后我们需要⽤Python提取我们想要的古诗并且写⼊到⽂件中步骤:
1. 遍历所有⼦⽂件夹,然后将.json⽂件路径保存到数组⾥
2. 打开并读取.json⽂件
3. 获取古诗每⼀个诗句
4. 检测古诗是不是五⾔或七⾔
5. 将需要的古诗写⼊⽂件
代码如下:
import os
import json
# 遍历所有⼦⽂件夹下包含⽂件后缀的函数
def findAllFilesWithSpecifiedSuffix(target_dir, target_suffix="txt"):
find_res =[]
target_suffix_dot ="."+ target_suffix
walk_generator = os.walk(target_dir)
for root_path, dirs, files in walk_generator:
if len(files)<1:
continue
for file in files:
file_name, suffix_name = os.path.splitext(file)
if suffix_name == target_suffix_dot:
find_res.append(os.path.join(root_path,file))
return find_res
# 调⽤函数
fa=findAllFilesWithSpecifiedSuffix("C:/Users/shenyutong/Desktop/chinese-poetry-master","json")
# 打开要写⼊的⽂件,这⾥分为两种类型,五⾔和七⾔,以便于⽣成特定长度的藏头诗
f111 =open('','w', encoding ="utf-8")
f11 =open('','w', encoding ="utf-8")
cnt=0
for i in fa:
f =open(i,'r',encoding='utf-8')
# json.load() 这种⽅法是解析⼀个⽂件中的数据
m = json.load(f)
for j in m:
# 变量kkk是⽤于检测该条json数据是否包含古诗,看⼀下古诗.json⽂件的结构可以得知
kkk=None
try:
kkk=j['content']
except:
try:
siblings的中文kkk=j['paragraphs']
except:
pass
if kkk!=None:
cnt+=1
if cnt%10000==0:
print("正在获取古诗... 计数:",cnt)
for each_poem in kkk:
'''判断古诗是七⾔还是五⾔,这⾥有些复杂,判断过程如下:
⾸先判断古诗是否有两段(列如XXXXX,XXXXX。)并且两半字数是否相等(列如XXXXX,XXXXX。就是相等的,XXX,XXXXX。就是不相等的)然后判断古诗是五⾔(含符号12字)还是七⾔(含符号16字)
最后分别写⼊到指定的⽂件'''
python解析json文件if len(each_poem.split(","))==2and len(each_poem.split(",")[0])==len(
each_poem.split(",")[1].replace("。","")):
if len(each_poem)==12:
f111.write("\n")
f111.write(each_poem.split(",")[0]+"\n"+ each_poem.split(",")[1].replace("。",""))
elif len(each_poem)==16:
f11.write("\n")
f11.write(each_poem.split(",")[0]+"\n"+ each_poem.split(",")[1].replace("。",""))
f111.close()
f11.close()
⽣成藏头诗
⽣成过程:
1. 遍历输⼊字符(i)
2. 遍历古诗列表(j)
3. 判断古诗的第⼀个(如果是藏尾的话就是最后⼀个)与i是否相等
4. 如果相等则输出该句加上标点并break
代码如下:
a =input("请输⼊您想⽣成的藏头诗字数(五⾔/七⾔): ")
while not a in['五⾔','七⾔']:
print("输⼊有误,请重新输⼊")
a =input("请输⼊您想⽣成的藏头诗字数(五⾔/七⾔): ")
b =input("请输⼊您想⽣成的类别(藏头/藏尾): ")
while not b in['藏头','藏尾']:
print("输⼊有误,请重新输⼊")
b =input("请输⼊您想⽣成的藏头诗字数(藏头/藏尾): ")
c =input("请输⼊您想藏头的话: ")
while not c:
print("输⼊有误,请重新输⼊")
c =input("请输⼊您想⽣成的藏头诗字数(藏头/藏尾): ")
selectedcolorif a =="五⾔":
f =open("","r", encodin
g ="utf-8").read().split("\n")
else:
f =open("","r", encodin
g ="utf-8").read().split("\n")
output_d =0
for i in c:
for j in f:
if b =="藏头":
if j[0]== i:contain和include
output_d +=1
print(j, end ="")
if output_d %2==0:
print("。")
matlab安装后打开又要安装
else:
print(",")
break
else:
if j[-1]== i:
output_d +=1
print(j, end ="")
if output_d %2==0:
print("。")
else:
php 是干嘛用的print(",")
break
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论