如何用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 ...
随机推荐
- OC-03类的声明和实现
例子 //类名:Car//属性:轮胎个数.时速//行为:跑 #import<Foundation/Foundation.h >//完整的写一个函数:函数的声明和定义(实现)//完整的写一个 ...
- [转]redis.conf的配置解析
# redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...
- 2016 Multi-University Training Contest 8
solved 4/11 2016 Multi-University Training Contest 8 贪心 1001 Ball(BH) 代码: #include <bits/stdc++.h ...
- EventBus vs Otto vs LiteEventBus
http://blog.chengyunfeng.com/?p=449 http://litesuits.com/
- 查看修改swap空间大小
1 查看swap 空间大小(总计): # free -m 默认单位为k, -m 单位为M total used fr ...
- Android Partitions Explained: boot, system, recovery, data, cache &; misc
from: http://www.addictivetips.com/mobile/android-partitions-explained-boot-system-recovery-data-cac ...
- SPBF(队列优化的Bellman-Foord)
- nyoj 2
#include <iostream> #include <stack> #include <string.h> #include <stdio.h> ...
- The 2014 ACM-ICPC Asia Mudanjiang Regional
继续复盘之前的Regional......出题者说这一套题太简单,对当时没有AK很不满......真是醉了,弱校没法活了 [A]签到题 [B]树结构,树的中心 [C]-_-/// [D]概率DP [E ...
- Android 数据存储02之文件读写
Android文件读写 版本 修改内容 日期 修改人 V1.0 原始版本 2013/2/25 skywang Android文件读写的有两种方式.一种,是通过标准的JavaIO库去读写.另一种,是通过 ...