前言

苏东坡,千古奇才,大家都喜欢他。叔叔也非常喜欢他,毕竟东坡肉外酥里嫩,肥而不腻,堪称人间极品。

不过,比起苏东坡,叔叔更喜欢王维

  1. 大帅哥。迷倒大唐公主
  2. 专一。这样一个大帅哥,在妻子过世后没有再娶
  3. 有才华。写诗、绘画、音乐、书法各种会,妥妥的顶级文艺青年。

    这样一个帅气专一有才的人,试问谁不喜欢呢?

先跑个题,我们来看看王维爱情的名句

红豆生南国,春来发几枝。愿君多采撷,此物最相思。

没错了,是心动的感觉!我们再来欣赏一句

大漠孤烟直,长河落日圆。

再再来一句

大漠孤烟直,长河落日圆

卧槽!牛逼

然而苏东坡虽然是奇才,也有过苏“十年生死两茫茫,不思量,自难忘”这样的思念亡妻名句,但是写完之后继续娶妻纳妾。

回到正题,下面我们程序来自动创建苏总的《赤壁赋》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文档的更多相关文章

  1. 自动生成并导出word文档

    今天很荣幸又破解一现实难题:自动生成并导出word文档 先看页面效果: word效果: 代码: 先搭建struts2项目 创建action,并在struts.xml完成注册 <?xml vers ...

  2. python 使用win32com实现对word文档批量替换页眉页脚

    最近由于工作需要,需要将70个word文件的页眉页脚全部进行修改,在想到这个无聊/重复/没有任何技术含量的工作时,我的内心是相当奔溃的.就在我接近奔溃的时候我突然想到完全可以用python脚本来实现这 ...

  3. Python读取word文档内容

    1,利用python读取纯文字的word文档,读取段落和段落里的文字. 先读取段落,代码如下: 1 ''' 2 #利用python读取word文档,先读取段落 3 ''' 4 #导入所需库 5 fro ...

  4. C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)

    这篇博客将要讨论的是关于: 如何从C#的source以及注释, 生成一份Word格式的关于各个类,函数以及成员变量的说明文档. 他的大背景如下...... 最近的一个项目使用C#, 分N个模块, 在项 ...

  5. 利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等

    前言: 前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息. 本篇博客主要内容有: 1.获取文档的章节信 ...

  6. C# 复制一个Word文档的部分或全部内容到另一个Word文档

    C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程 ...

  7. JAVA:借用OpenOffice将上传的Word文档转换成Html格式

    为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...

  8. OpenOffice Word文档转换成Html格式

    为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl ...

  9. Python处理PDF和Word文档常用的方法(二)

    Python处理word时,需要安装和导入python-docx模块. 安装命令:pip install python-docx 导入命令:import docx 编码编写顺序:用docx.Docum ...

随机推荐

  1. Golang内建库学习笔记(2)-web服务器相关

    package main import ( "net/http" "fmt" "strings" "log" ) fun ...

  2. 函数式编程(logging日志管理模块)

    本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...

  3. python输出乘法口诀

    for i in range(1,10): for j in range(1,i+1): print (" ".join(["%d*%d=%d" %(j,i,i ...

  4. AJAX传值中文乱码

    AJAX传值时采用的是UTF-8编码格式,客户端中文字符传输到服务器端时,如果服务器编码格式或者所采用的MVC框架的编码格式不是UTF-8,则很可能会出现中文乱码.解决办法如下: 客户端用js函数en ...

  5. 深信服上网行为管理配置跨三层MAC识别

    1.在认证高级选项里点击新增 如果PC的IP和MAC存在于多个三层交换机,则需新增多个. 点击上图"查看服务器信息"测试能否从交换机获取PC的IP和MAC,有返回结果则能正常获取, ...

  6. (25)Vim 1

    1.安装Vim CentOS 系统中,使用如下命令即可安装 Vim: yum install vim 需要注意的是,此命令运行时,有时需要手动确认 [y/n] 遇到此情况,选择 "y&quo ...

  7. charles(3)charles防止30分钟自动重启

    前言 Charles是收费软件,可以免费试用30天.试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时. 此时,我们只需网上找一个注册码即可 解 ...

  8. Nestjs 路程 之 异常过滤器Exceptionfilter

    参考文档:docs.nestjs.cn 说起Nestjs的异常过滤器,不能不提.Net的全局过滤器Filter,功能那是相当的强悍,用理论话说叫AOP 面向切面编程,可谓方便了太多需要异常处理的场景. ...

  9. Codeforces Round #650 (Div. 3) E. Necklace Assembly (暴力)

    题意:有一个字符串,要求使用其中字符构造一个环(不必全部都用),定义一个环是k美的,如果它转\(k\)次仍是原样,现在给你\(k\),要求最长的k美环的长度. 题解:我们首先看\(k\),如果一个环转 ...

  10. Bone Collector II HDU - 2639 01背包第k最大值

    题意: 01背包,找出第k最优解 题解: 对于01背包最优解我们肯定都很熟悉 第k最优解的话也就是在dp方程上加一个维度来存它的第k最优解(dp[i][j]代表,体积为i能获得的第j最大价值) 对于每 ...