python写诗

下面是记录本人编写的过程新手见谅啊!

思路

首先去找些古诗,一万字多的,谢谢度娘,古诗他出。用正则将每句是提取与原来的文本分离,然后将诗句中的词提取出来,相同长度的词放在一起,最后随机调用,组成一首毫无逻辑的诗

诗句提取

先看看把诗句提取的过程
诗词的样例:
01. 《黄鹤楼》崔颢
昔人已乘黄鹤去,此地空余黄鹤楼。黄鹤一去不复返,白云千载空悠悠。晴川历历汉阳树,芳草萋萋鹦鹉洲。日暮乡关何处是烟波江上使人愁。
02. 《登高》杜甫
风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来。万里悲秋常作客,百年多病独登台。艰难苦恨繁霜鬓,潦倒新停浊酒杯。
03. 《秋兴 ( 八首 ) 》杜甫一
玉露凋伤枫树林,巫山巫峡气萧森。江间波浪兼天涌,塞上风云接地阴。丛菊两开他日泪,孤舟一系故园心。寒衣处处催刀尺,白帝城高急暮砧。

大概就是这样,用正则表达式还是很简单的,毕竟那么有规律!

import re

def loadup (l,t):
    with open (l,"w",encoding='utf-8') as f:
        f.write(str(t))

def loadon (l):
    with open (l,"r",encoding='utf-8') as f:
        h =f.read()
        return h


path1 = "C:\\Users\\西木康\\Desktop\\爬虫\\诗.txt"
path2 = "C:\\Users\\西木康\\Desktop\\爬虫\\词库1.txt"
pattern1 = re.compile('.*?(\w{7})[?。,]',re.S)
text0 = loadon( path1 )
text1 = re.findall(pattern1,text0)
loadup(path2,text1)
print("成功")

过程是多么艰辛,一个多月没看了,错误那是个多啊。

来看看效果:

‘昔人已乘黄鹤去’, ‘此地空余黄鹤楼’, ‘黄鹤一去不复返’, ‘白云千载空悠悠’, ‘晴川历历汉阳树’, ‘芳草萋萋鹦鹉洲’, ‘烟波江上使人愁’, ‘风急天高猿啸哀’, ‘渚清沙白鸟飞回’, ‘无边落木萧萧下’, ‘不尽长江滚滚来’, ‘万里悲秋常作客’, ‘百年多病独登台’, ‘艰难苦恨繁霜鬓’, ‘潦倒新停浊酒杯’, ‘玉露凋伤枫树林’, ‘巫山巫峡气萧森’, ‘江间波浪兼天涌’, ‘塞上风云接地阴’, ‘丛菊两开他日泪’, ‘孤舟一系故园心’, ‘寒衣处处催刀尺’, ‘白帝城高急暮砧’, ‘夔府孤城落日斜’, ‘每依北斗望京华’, ‘听猿实下三声泪’, ‘奉使虚随八月槎’, ‘画省香炉违伏枕’, ‘山楼粉堞隐悲笳’, ‘请看石上藤萝月’, ‘千家山郭静朝晖’, ‘日日江楼坐翠微’, ‘信宿渔人还泛泛’, ‘清秋燕子故飞飞’, ‘匡衡抗疏功名薄’,

还可以,,,,。就这样吧

再将逐个诗句的每个词提取

这里需要用到 random.choice(list),一开始将choice写成 choise
我的英语啊,下次一定要注意!

import re
import random 

def loadup (l,t):
    with open (l,"w",encoding='utf-8') as f:
        f.write(str(t))
def loada (l,t):
    with open (l,"a",encoding='utf-8') as f:
        f.write(str(t))

def loadon (l):
    with open (l,"r",encoding='utf-8') as f:
        h =f.read()
        return h

path1 = "C:\\Users\\西木康\\Desktop\\爬虫\\诗.txt"
path2 = "C:\\Users\\西木康\\Desktop\\爬虫\\词库1.txt"
path3 = "C:\\Users\\西木康\\Desktop\\爬虫\\词库2.txt"

pattern1 = re.compile('.*?(\w{7})[?。,]',re.S)
pattern2 = re.compile('.*?\'(..).....\'',re.S)
pattern3 = re.compile('.*?\'..(..)...\'',re.S)
pattern4 = re.compile('.*?\'....(...)\'',re.S)

#text0 = loadon( path1 )
#text1 = re.findall(pattern1,text0)
#loadup(path2,text1)
text2 = loadon( path2 )
s1 = ","
s2 = "。\n"
list1 = re.findall(pattern2,text2)
list2 = re.findall(pattern3,text2)
list3 = re.findall(pattern4,text2)
for index in range(500):
    for index1 in range(4):
        shi = str(random.choice(list1))+str(random.choice(list2))+str(random.choice(list3))+s1
        loada (path3,shi)
    loada (path3,s2)

print("成功!")

这是经历好多次的修改才成。不熟练啊!

看看结果吧!

关塞花明仰古槐,相随殷勤意萦回,风流春心相对出,丞相江楼晒春衣,。
善恶破浪黯然收,共怜珍羞是丁年,病入栖老春相问,永夜阴阳对乡河,。
空此寺北春风面,路长雾雨非栋梁,酒浇征途须纵酒,两朝千山托杜鹃,。
只是后主变古今,孤帆多病皆春水,丞相烟霞在眼中,到底重忆斩李斯,。
隔叶农家龙蛇蛰,柳暗毕竟面红潮,病入文章非昨夜,欲渡无由隔迢迢,。
隔叶立命汉阳树,巫峡欲换满函关,一弦还休天下计,病树千家剪秋波,。
平林应觉羽书驰,夸张秋风白沙堤,总为寄言千里目,故国幕府休多恨,。
莺啼勋成喜欲狂,世味那复多少事,春生软帐兼用钺,影作水拍看棹去,。
出师人事蜡炬残,鹤驾依旧身先死,贱贫雁断满衣裳,携病寥落沐浴稀,。
应须风云真落魄,锦江逸致拔金钗,黄麻龙鳞长缭绕,仙侣英雄更著鞭,。
分曹鱼还芦荻秋,雪衫逶迤愁更愁,千古音书每堪伤,两行年华浮碧落,。
王濬白鸟无多路,城上碧草剑休磨,东风宠柳草木兵,此地天高来天地,。
清秋夹城倚绝壁,谁家留客悲自语,密雨晓梦三五月,山楼越水已暄和,。
风含蓬蒿坐翠微,千山留客忘忧国,数杯三年非栋梁,京华清酒已乖期,。
丛菊有意功名薄,今人千载识圣颜,坏壁三年皆春水,今日无如功名薄,。

果然没人性!

结语

第一次写,就是记录自己的学习过程,我还是一个菜鸟。

纯属娱乐,对传统古诗并无冒犯!

侵删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值