python程序写诗_用Python光速为你写诗
宋无涯出同
唐暗水才阳
楼粒甫关尽
头心雨上人‘
公众号:我将在南极找寻你
后台回复“写诗”即可获取源码和用到的文本文件。
今天咱们的主题是教写诗,不过不是我们写,而是教计算机写,想写几首写几首,先来看一下效果
本次利用python来实现自动写诗,需要安装“jieba”库,直接‘pip install jieba’就可以啦
第一步. 下载训练文本
这一步大家都会,从网上下载古诗素材即可,我下载了一个文本文件,将其命名为“poem.txt”,其内容如图所示
第二步. 读取文本数据poem=open("/home/fantasy/Downloads/poems.txt",'r+')
fr0=poem.read()
在Python终端键入“fr0”,效果如图则表示已经读入
第三步. 文本处理
由于文本中包含书名号和问号和换行符等不需要的字符,所以需要将它们删掉(替换为空)
首先去掉书名号和问号:
fr1=re.sub('《.*?》','',fr0)
fr2=re.sub('.*?(/?).*?','',fr1)
然后进行分词:
words=jieba.cut(fr2)
c=','.join(words)
cc=c.split(',')
接下来去掉其它我们不需要的特殊字符串:
word=[]
for i in cc:
if i=='?':
del i
elif i=='。':
del i
elif i==' ':
del i
elif i==',':
del i
elif i=='\n':
del i
elif i=='\u3000':
del i
else:
word.append(i)
到现在为止,文本文件变成了如下图所示的样子
第四步. 拆词成字
将所有的词拆开,提取出所有的汉字存入w列表中:
w=[]
for i in range(len(word)):
for j in word[i]:
w.append(j)
第五步. 开始写诗啦
定义一个写诗的函数,命名为“writepoem”:
def writepoem():
poe=[]
for lensen in range(4):
x=random.sample(w,5)
one=''.join(x)
poe.append(one)
poe=','.join(poe)
return poe
第六步. 调用写诗函数进行创作
def itemsnum():
N=input('想写几首呢,告诉我吧:')
for i in range(1,int(N)+1):
print('~~~~~~~第',i,'首~~~~~~~~')
print(writepoem())
print('~~~~~最后一首了呢~~~~~~')
以上便完成了机器写诗的全部步骤,现在我们来运行一下
运行程序,在IDLE调用itemsnum函数写3首诗:
是不是很有意思呢,嘿嘿。
不过目前的程序还比较笨,不会押韵,下次可以考虑把相同韵脚的字放在一起,把意象相同的词放在一起,从而使诗句更有韵味。
最后附上完整代码,大家也可以在公众号后台回复“写诗”获取源码和文本文件
"""
运行本脚本,在你的IDE终端输入“itemsnum()”
来调用写诗函数进行创作
"""
print(__doc__)
#导入用到的库
import re #正则匹配
import jieba #分词
import random #随机选取
#读取文本文件
poem=open("/home/fantasy/Downloads/poems.txt",'r+') #这是我的文件路径,你在使用时需要改动此项为你的路径fr0=poem.read().strip()#去掉书名号和?fr1=re.sub('《.*?》','',fr0)
fr2=re.sub('.*?(/?).*?','',fr1)
#分词
words=jieba.cut(fr2)
c=','.join(words)
cc=c.split(',')
#去深度删除特殊字符串,代码写的有些鸡肋,大佬莫喷哈
word=[]for i in cc:
if i=='?':
del i
elif i=='。':
del i
elif i==' ':
del i
elif i==',':
del i
elif i=='\n':
del i
elif i=='\u3000':
del i
else:
word.append(i)
#拆词为字
w=[]
for i in range(len(word)):
for j in word[i]:
w.append(j)
#开始写诗
def writepoem():
poe=[]
for lensen in range(4):
x=random.sample(w,5)
one=''.join(x)
poe.append(one)
poe=','.join(poe)
return poe
#调用写诗函数
def itemsnum():
N=input('想写几首呢,告诉我吧:')
for i in range(1,int(N)+1):
print('~~~~~~~~~~~~~~~~~第',i,'首~~~~~~~~~~~~~~~~~~')
print(writepoem())
print('~~~~~~~~~~~~~~~~~最后一首了呢~~~~~~~~~~~~~~~~~~')
python程序写诗_用Python光速为你写诗相关推荐
- 编写python程序的步骤_编写python程序和运行.py文件的方法步骤
前提:已安装好 Subliume Test 3 且已经添加好python编译系统,已安装好python3.7 一.新建一个文本文档,将后缀名改为.py 二.使用 Subliume Test 3 打开该 ...
- python程序运行原理_谈谈 Python 程序的运行原理
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...
- 用python做炒股软件-python程序源码_基于python的炒股软件
股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...
- python程序员现状_天才Python程序员身价上亿却被说挫,6个月减90斤,逆袭成文艺范男神!...
image 你对程序猿的印象是怎么样? 你所知道的程序员,是一种自嘲为码农的猿类 学习Python中有不明白推荐加入交流群 号:864573496 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频 ...
- 如何为python程序设置使用次数_提升Python程序性能的7个习惯
Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1.使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中的 ...
- python程序如何循环_在Python的一段程序中如何使用多次事件循环详解
背景 本文主要给大家介绍了关于在Python一段程序中使用多次事件循环的相关内容,我们在Python异步程序编写中经常要用到如下的结构 import asyncio async def doAsync ...
- python程序设置头像_利用python实现微信头像加红色数字功能
通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...
- python程序调试题_关于python程序调试问题,一个文件计算的问题
那位大神帮小弟看下这段代码有什么需要改进的没有.程序要求为:程序主要内容是:大地坐标经纬度的格式转换问题,例如120°30′30″转换为120.50833333°,并且可以互换,这样的程序.... 那 ...
- python程序红绿灯识别_使用python创建红绿灯
例如,函数被分配给Radiobutton,但您可以将函数分配给self.colorfrom Tkinter import * class TrafficLights: def __init__(sel ...
- Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业...
Python代写CSSE1001/7030 python程序作业.代做python CSSE1001/7030程序作业. 代写CSSE1001/7030 python 作业 Uno++ Assignm ...
最新文章
- RoI Pooling 与 RoI Align 有什么区别?
- 清华学长教你用Python 批量加水印只需一行命令!
- Ecplise SVN 配置和使用
- django_rest_framework之GenericAPIView(一)源码讲解
- [转载] Python3.0中普通方法、类方法和静态方法的比较
- python 今日头条 控制手机_你知道Python脚本控制安卓手机可以用来做什么吗?
- jetbrains mono字体安装方法(LInux Windows MacOS系统)
- 智能机器人机器人心得_你是机器人吗
- 日本人布置工作至少说5遍
- A Game of Thrones(60)
- 计算机网络重置,怎么重置电脑网络连接
- 增强感受野SPP、ASPP、RFB、PPM
- 安装MathType后,不能快捷键复制粘贴
- photoshop中的快速选择工具
- dedecms怎么改php版本_王者荣耀:管你版本怎么改,这几位峡谷常青树始终屹立不倒...
- 【转】很有哲理的句子,每天都值得看一遍
- 基于 STM32 和 NB-IoT 的可穿戴式老人防摔监测系统
- Android三种姿势带你玩转360度全景图功能
- win7下装ubuntu双系统 硬盘安装详细教程
- Android 内存优化——常见内存泄露及优化方案
热门文章
- html 点击按钮刷新验证码,HTML点击刷新验证码
- jsp中点击验证码刷新验证码
- 计算机二级不看教材只刷题可以吗,中级会计可以只看轻松过关不看教材吗
- Sklearn中的二分类模型可以进行多分类的原理
- 移动开发用户行为分析神器之--AppSee!
- 类别不平衡问题之SMOTE算法(Python imblearn极简实现)
- SG90舵机驱动,有代码
- 数控系统数据采集协同架构,集成马扎克(mazak)、西门子(Siemens)、海德汉(heidenhain)、广数、凯恩帝(knd)、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科(Fanuc)、华中
- 单片机控制10BitDA正弦信号发生器 PROTEUS 和51单片机教程(附仿真文件+源代码)
- linux的vi2编辑相关命令,Linux vi/vim编辑器常用命令与用法总结