宋无涯出同

唐暗水才阳

楼粒甫关尽

头心雨上人‘

公众号:我将在南极找寻你

后台回复“写诗”即可获取源码和用到的文本文件。

今天咱们的主题是教写诗,不过不是我们写,而是教计算机写,想写几首写几首,先来看一下效果

本次利用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光速为你写诗相关推荐

  1. 编写python程序的步骤_编写python程序和运行.py文件的方法步骤

    前提:已安装好 Subliume Test 3 且已经添加好python编译系统,已安装好python3.7 一.新建一个文本文档,将后缀名改为.py 二.使用 Subliume Test 3 打开该 ...

  2. python程序运行原理_谈谈 Python 程序的运行原理

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...

  3. 用python做炒股软件-python程序源码_基于python的炒股软件

    股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...

  4. python程序员现状_天才Python程序员身价上亿却被说挫,6个月减90斤,逆袭成文艺范男神!...

    image 你对程序猿的印象是怎么样? 你所知道的程序员,是一种自嘲为码农的猿类 学习Python中有不明白推荐加入交流群 号:864573496 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频 ...

  5. 如何为python程序设置使用次数_提升Python程序性能的7个习惯

    Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1.使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中的 ...

  6. python程序如何循环_在Python的一段程序中如何使用多次事件循环详解

    背景 本文主要给大家介绍了关于在Python一段程序中使用多次事件循环的相关内容,我们在Python异步程序编写中经常要用到如下的结构 import asyncio async def doAsync ...

  7. python程序设置头像_利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...

  8. python程序调试题_关于python程序调试问题,一个文件计算的问题

    那位大神帮小弟看下这段代码有什么需要改进的没有.程序要求为:程序主要内容是:大地坐标经纬度的格式转换问题,例如120°30′30″转换为120.50833333°,并且可以互换,这样的程序.... 那 ...

  9. python程序红绿灯识别_使用python创建红绿灯

    例如,函数被分配给Radiobutton,但您可以将函数分配给self.colorfrom Tkinter import * class TrafficLights: def __init__(sel ...

  10. Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业...

    Python代写CSSE1001/7030 python程序作业.代做python CSSE1001/7030程序作业. 代写CSSE1001/7030 python 作业 Uno++ Assignm ...

最新文章

  1. RoI Pooling 与 RoI Align 有什么区别?
  2. 清华学长教你用Python 批量加水印只需一行命令!
  3. Ecplise SVN 配置和使用
  4. django_rest_framework之GenericAPIView(一)源码讲解
  5. [转载] Python3.0中普通方法、类方法和静态方法的比较
  6. python 今日头条 控制手机_你知道Python脚本控制安卓手机可以用来做什么吗?
  7. jetbrains mono字体安装方法(LInux Windows MacOS系统)
  8. 智能机器人机器人心得_你是机器人吗
  9. 日本人布置工作至少说5遍
  10. A Game of Thrones(60)
  11. 计算机网络重置,怎么重置电脑网络连接
  12. 增强感受野SPP、ASPP、RFB、PPM
  13. 安装MathType后,不能快捷键复制粘贴
  14. photoshop中的快速选择工具
  15. dedecms怎么改php版本_王者荣耀:管你版本怎么改,这几位峡谷常青树始终屹立不倒...
  16. 【转】很有哲理的句子,每天都值得看一遍
  17. 基于 STM32 和 NB-IoT 的可穿戴式老人防摔监测系统
  18. Android三种姿势带你玩转360度全景图功能
  19. win7下装ubuntu双系统 硬盘安装详细教程
  20. Android 内存优化——常见内存泄露及优化方案

热门文章

  1. html 点击按钮刷新验证码,HTML点击刷新验证码
  2. jsp中点击验证码刷新验证码
  3. 计算机二级不看教材只刷题可以吗,中级会计可以只看轻松过关不看教材吗
  4. Sklearn中的二分类模型可以进行多分类的原理
  5. 移动开发用户行为分析神器之--AppSee!
  6. 类别不平衡问题之SMOTE算法(Python imblearn极简实现)
  7. SG90舵机驱动,有代码
  8. 数控系统数据采集协同架构,集成马扎克(mazak)、西门子(Siemens)、海德汉(heidenhain)、广数、凯恩帝(knd)、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科(Fanuc)、华中
  9. 单片机控制10BitDA正弦信号发生器 PROTEUS 和51单片机教程(附仿真文件+源代码)
  10. linux的vi2编辑相关命令,Linux vi/vim编辑器常用命令与用法总结