如何用python自动编写《赤壁赋》word文档
前言
苏东坡,千古奇才,大家都喜欢他。叔叔也非常喜欢他,毕竟东坡肉外酥里嫩,肥而不腻,堪称人间极品。
不过,比起苏东坡,叔叔更喜欢王维
- 大帅哥。迷倒大唐公主
- 专一。这样一个大帅哥,在妻子过世后没有再娶
- 有才华。写诗、绘画、音乐、书法各种会,妥妥的顶级文艺青年。
这样一个帅气专一有才的人,试问谁不喜欢呢?
先跑个题,我们来看看王维爱情的名句
红豆生南国,春来发几枝。愿君多采撷,此物最相思。
没错了,是心动的感觉!我们再来欣赏一句
大漠孤烟直,长河落日圆。
再再来一句
大漠孤烟直,长河落日圆
卧槽!牛逼
然而苏东坡虽然是奇才,也有过苏“十年生死两茫茫,不思量,自难忘”这样的思念亡妻名句,但是写完之后继续娶妻纳妾。
回到正题,下面我们程序来自动创建苏总的《赤壁赋》word文档,并提取,学会这几招,以后各种自动化处理word文档如有神助~
安装-python-docx
我们需要用到一个python强大的库:python-dox
我们来安装一下
pip instal python-docx
注意:不是安装的docx
简单介绍下原理:
pyhton-docx包创建的文档一个Document对象,然后会在文档上添加各种对象:如段落、行内元素、表格、内容等,
文档层级结构类似下面这样:
文档-Document
—段落Paragraph
——行内元素Runs
———内容text
———字体font
———颜色color
———字号size
—内容text
—表格tables
——单元格cell
——段落Paragraph
一、自动编写《赤壁赋》
准备数据
name = "赤壁赋"
author = "苏轼"
dynasty = "宋"
paragraphs = [
'''壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。''',
'''于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮于怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之,其声呜呜然:如怨如慕,如泣如诉;余音袅袅,不绝如缕;舞幽壑之潜蛟,泣孤舟之嫠妇苏子愀然,正襟危坐,而问客曰:“何为其然也?”客曰:“月明星稀,乌鹊南飞,此非曹孟德之诗乎?西望夏口,东望武昌。山川相缪,郁乎苍苍;此非孟德之困于周郎者乎?方其破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江,横槊赋诗;固一世之雄也,而今安在哉?况吾与子渔樵于江渚之上,侣鱼虾而友糜鹿,驾一叶之扁舟,举匏樽以相属;寄蜉蝣与天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷;挟飞仙以遨游,抱明月而长终;知不可乎骤得,托遗响于悲风。”''',
'''苏子曰:“客亦知夫水与月乎?逝者如斯,而未尝往也;盈虚者如彼,而卒莫消长也。盖将自其变者而观之,而天地曾不能一瞬;自其不变者而观之,则物于我皆无尽也。而又何羡乎?且夫天地之间,物各有主。苟非吾之所有,虽一毫而莫取。惟江上之清风,与山间之明月,耳得之而为声,目遇之而成色。取之无禁,用之不竭。是造物者之无尽藏也,而吾与子之所共适。”''',
'''客喜而笑,洗盏更酌,肴核既尽,杯盘狼藉。相与枕藉乎舟中,不知东方之既白。'''
]
新建文档
document = Document()
document.styles['Normal'].font.name = u'微软雅黑'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
字里设置了一下字体
添加标题
heading1 = document.add_heading(name, 0)
heading1.alignment = WD_ALIGN_PARAGRAPH.CENTER
这里设置成了居中
添加作者
p = document.add_paragraph("【作者】")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(author)
run.italic = True
run.bold = True
字体居中斜体加粗
添加朝代
p.add_run(" 【朝代】")
run = p.add_run(dynasty)
run.italic = True
run.bold = True
字体也是居中斜体加粗
添加图片
document.add_picture('test.jpeg', width=Inches(2))
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
为了让效果更美观一点,我们整张图片润色一下,图片是这样的
添加段落
for paragraph in paragraphs:
p = document.add_paragraph(paragraph) # 创建段落对象
p.paragraph_format.first_line_indent = Inches(0.25)
设置了下首行缩进
保存word文档
document.save(''/Users/chenqionghe/Downloads/赤壁赋.docx'')
大功告成,运行一下
python create-poems.py
看到生成了一个赤壁赋.docx
,如下
打开如下
天呐这也太棒棒了吧~,
下面贴出全部代码
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
titleName = "赤壁赋"
author = "苏轼"
time = "宋"
paragraphs = [
'''壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。''',
'''于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮于怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之,其声呜呜然:如怨如慕,如泣如诉;余音袅袅,不绝如缕;舞幽壑之潜蛟,泣孤舟之嫠妇苏子愀然,正襟危坐,而问客曰:“何为其然也?”客曰:“月明星稀,乌鹊南飞,此非曹孟德之诗乎?西望夏口,东望武昌。山川相缪,郁乎苍苍;此非孟德之困于周郎者乎?方其破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江,横槊赋诗;固一世之雄也,而今安在哉?况吾与子渔樵于江渚之上,侣鱼虾而友糜鹿,驾一叶之扁舟,举匏樽以相属;寄蜉蝣与天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷;挟飞仙以遨游,抱明月而长终;知不可乎骤得,托遗响于悲风。”''',
'''苏子曰:“客亦知夫水与月乎?逝者如斯,而未尝往也;盈虚者如彼,而卒莫消长也。盖将自其变者而观之,而天地曾不能一瞬;自其不变者而观之,则物于我皆无尽也。而又何羡乎?且夫天地之间,物各有主。苟非吾之所有,虽一毫而莫取。惟江上之清风,与山间之明月,耳得之而为声,目遇之而成色。取之无禁,用之不竭。是造物者之无尽藏也,而吾与子之所共适。”''',
'''客喜而笑,洗盏更酌,肴核既尽,杯盘狼藉。相与枕藉乎舟中,不知东方之既白。'''
]
# 新建文档
document = Document()
document.styles['Normal'].font.name = u'微软雅黑'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
heading1 = document.add_heading('赤壁赋', 0)
heading1.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 添加作者(居中斜体加粗)
p = document.add_paragraph("【作者】")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run(author)
run.italic = True
run.bold = True
# 添加朝代(居中斜体加粗)
p.add_run(" 【朝代】")
run = p.add_run(time)
run.italic = True
run.bold = True
# 添加图片(居中)
document.add_picture('test.jpeg', width=Inches(2))
last_paragraph = document.paragraphs[-1]
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 写下文章(首行缩进)
for paragraph in paragraphs:
p = document.add_paragraph(paragraph) # 创建段落对象
p.paragraph_format.first_line_indent = Inches(0.25)
document.save(''/Users/chenqionghe/Downloads/赤壁赋.docx')
二、自动提取《赤壁赋》的文字
既然可以自动编写word文档,我们也可以自动提取word文档。
比如有人给你发了500个文档,你只是想快速根据文字了解一下内容,又不想一个一个打开,这时候就可以用程序自动提取文本啦~
下面演示一下把刚刚生成的文档内容全部弄出来
from docx import Document
# 指定文档路径
docFile = '/Users/chenqionghe/Downloads/赤壁赋.docx'
# 打开文档为Document对象
document = Document(docFile)
# 遍历所有的段落保存到text数组
text = []
for para in document.paragraphs:
text.append(para.text)
# 打开最终结果
print('\n'.join(text))
我们来运行一下,结果如下
哦豁,我们并没有打开介过word文档,但系已经愉快地把词弄出来辽~
以上内容由chenqionghe提供,是不是超级简单呀~
有了这两张,以后想写用程序写啥都可以提示准备好,比如自动生成500首唐诗或作文,又比如一个不打开一堆word文档就把所有的内容提取出来合并成一个文件,
又比自动写作文或自动提取答案啥的,简单不要太嗨~
如何用python自动编写《赤壁赋》word文档的更多相关文章
- 自动生成并导出word文档
今天很荣幸又破解一现实难题:自动生成并导出word文档 先看页面效果: word效果: 代码: 先搭建struts2项目 创建action,并在struts.xml完成注册 <?xml vers ...
- python 使用win32com实现对word文档批量替换页眉页脚
最近由于工作需要,需要将70个word文件的页眉页脚全部进行修改,在想到这个无聊/重复/没有任何技术含量的工作时,我的内心是相当奔溃的.就在我接近奔溃的时候我突然想到完全可以用python脚本来实现这 ...
- C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)
这篇博客将要讨论的是关于: 如何从C#的source以及注释, 生成一份Word格式的关于各个类,函数以及成员变量的说明文档. 他的大背景如下...... 最近的一个项目使用C#, 分N个模块, 在项 ...
- C# 复制一个Word文档的部分或全部内容到另一个Word文档
C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程 ...
- JAVA:借用OpenOffice将上传的Word文档转换成Html格式
为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...
- OpenOffice Word文档转换成Html格式
为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...
- Python处理PDF和Word文档常用的方法(二)
Python处理word时,需要安装和导入python-docx模块. 安装命令:pip install python-docx 导入命令:import docx 编码编写顺序:用docx.Docum ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- C#实现通过模板自动创建Word文档的方法
原文地址:http://www.jb51.net/article/55332.htm 本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...
- 使用python编辑和读取word文档
python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. python-docx官方文档地址 使用python新建一个word文档,操作就像文档里介绍的那样: fr ...
随机推荐
- 异步编程系列06章 以Task为基础的异步模式(TAP)
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- (Array)169. Majority Element
Given an array of size n, find the majority element. The majority element is the element that appear ...
- JavaScript操作XML
JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...
- Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)
在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的.在本篇文章中,我们将引入另外 ...
- Bootstrap_表单_表单控件
一.输入框input 单行输入框,常见的文本输入框,也就是input的type属性值为text. 在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确 ...
- hdu 1561 The more, The Better (依赖背包 树形dp)
题目: 链接:点击打开链接 题意: 非常明显的依赖背包. 思路: dp[i][j]表示以i为根结点时攻击j个城堡得到的最大值.(以i为根的子树选择j个点所能达到的最优值) dp[root][j] = ...
- Oracle EBS R12多组织(多OU)访问架构
Oracle EBS R12多组织访问架构 多组织架构实现了经营单位(OU)的数据安全性,在底层数据表中有一列ORG_ID来记录数据所属的经营单一,所有多OU的基表都是以"_ALL" ...
- 利用 Eclipse IDE 的强大功能远程调试 Java 应用程序
II. Eclipse 连接套接字模式下的 VM 调用示例(具体引用实践) 说明:不管采用哪种方式,调试的源代码都在eclipse的环境下 一.调试方式一(将目标应用程序作为调试的服务器,eclips ...
- Java获取请求主机真实ip
一般情况下 getRemoteAddr()是可以正常使用的,代码如下: public String getIpAdress(HttpServletRequest request) { ip = req ...
- web移动端,需要清楚设备像素比devicePixelRatio的应用
我们这里所说的devicePixelRatio其实指的是window.devicePixelRatio, 被所有WebKit浏览器以及Opera所支持. 概念 devicePixelRatio ,它是 ...