python写诗

用简单的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("成功!")

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

看看结果吧!

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

果然没人性!

结语

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

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

侵删

你可能感兴趣的:(学习笔记,python,正则表达式)