实现python文本写入word
发布网友
发布时间:2022-04-19 14:36
我来回答
共2个回答
懂视网
时间:2022-04-18 09:44
这篇文章主要介绍了关于使用Python通过win32 COM实现Word文档的写入与保存方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
通过win32 COM接口实现软件的操作本质上来看跟直接操作软件一致,这跟我之前经常用的通过各种扩展的组件或者库实现各种文件的处理有较大的差异。如果有过Windows下使用Word的经历,那么使用win32 COM应该说是更为便捷的一种方式。
先前通过拼凑网络上的代码实现过Word文档的处理,今天通过读文档从头开始做一次新的尝试。简单实现一个Word文件的创建、写入与存储。
实现的代码如下:
#!/usr/bin/python
import os
from win32com.client import Dispatch
pwd = os.getcwd()
wordApp = Dispatch('word.Application')
wordApp.Visible = True
myDoc = wordApp.Documents.Add()
myRange = myDoc.Range(0,0)
myRange.InsertBefore('hello python word doc!')
myDoc.SaveAs(pwd + 'python_word_demo.docx')
myDoc.Close()
wordApp.Quit()
程序运行没有错误报出,运行的过程中会看到Word软件的打开以及操作最后关闭的过程。执行结束后,当前文件夹中多了一个名为python_word_demo.docx的文件。打开文件可以看到里面写入的内容如下:
这样,先前想演示的功能便已经实现,实现的方法比我想象中的简单不少。如果有文件的批量处理需求,这无疑又是一个可以考虑的好方法。
热心网友
时间:2022-04-18 06:52
准备
我测试使用的Python版本为2.7.10,如果你的版本是Python3.5的话,这里就不太适合了。
使用Speech API
原理
我们的想法是借助微软的语音接口,所以我们肯定是要进行调用 相关的接口。所以我们需要安装pywin32来帮助我们完成这一个底层的交互。
示例代码
import win32com.clientspeaker = win32com.client.Dispatch("SAPI.SpVoice")speaker.Speak("Hello, it works!")
小总结
是的,调用接口来实现语音功能就是这么简单,但是我们不得不来聊一聊这种方式的缺点。
对中文支持的不够好,仅仅是这一点,估计在中国没几个用它的了。
还有就是语速不能很好的控制
pyttsx方式
原理
pyttsx 是Python的一个关于文字转语音方面的很不错的库。我们还可以借助pyttsx来实现在线朗读rfc文件或者本地文件等等,最为关键的是,它对中文支持的还是不错的。
示例代码
# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'# __date__ = '2016/8/6'# __Desc__ = 文字转语音输出import pyttsxengine = pyttsx.init()engine.say('hello world')engine.say('你好,郭璞')engine.runAndWait()# 朗读一次engine.endLoop()
小总结
使用pyttsx,我们可以借助其强大的API来实现我们基本的业务需求。很酷吧。
pyttsx深入研究
做完上面的小实验,你肯定会觉得怎么这么不过瘾呢?
别担心,下面我们就一起走进pyttsx的世界,深入的研究一下其工作原理吧。
语音引擎工厂
类似于设计模式中的“工厂模式”,pyttsx通过初始化来获取语音引擎。当我们第一次调用init操作的时候,会返回一个pyttsx的engine对象,再次调用的时候,如果存在engine对象实例,就会使用现有的,否则再重新创建一个。
pyttsx.init([driverName : string, debug : bool]) → pyttsx.Engine
从方法声明上来看,第一个参数指定的是语音驱动的名称,这个在底层适合操作系统密切相关的。如下:
1.drivename:由pyttsx.driver模块根据操作系统类型来调用,默认使用当前操作系统可以使用的最好的驱动
sapi5 - SAPI5 on Windows
nsss - NSSpeechSynthesizer on Mac OS X
espeak - eSpeak on every other platform
2.debug: 这第二个参数是指定要不要以调试状态输出,建议开发阶段设置为True
引擎接口
要想很好的运用一个库,不了解其API是不行的。下面来看看pyttsx。engine.Engine的引擎API。
方法签名 参数列表 返回值 简单释义
connect(topic : string, cb : callable) topic:要描述的事件名称;cb:回调函数 → dict 在给定的topic上添加回调通知
disconnect(token : dict) token:回调失联的返回标记 Void 结束连接
endLoop() None → None 简单来说就是结束事件循环
getProperty(name : string) name有这些枚举值“rate, vioce,vioces,volumn → object 获取当前引擎实例的属性值
setProperty(name : string) name有这些枚举值“rate, vioce,vioces,volumn → object 设置当前引擎实例的属性值
say(text : unicode, name : string) text:要进行朗读的文本数据; name: 关联发音人,一般用不到 → None 预设要朗读的文本数据,这也是“万事俱备,只欠东风”中的“万事俱备”
runAndWait() None → None 这个方法就是“东风”了。当事件队列中事件全部清空的时候返回
startLoop([useDriverLoop : bool]) useDriverLoop:是否启用驱动循环 → None 开启事件队列
元数据音调
在pyttsx.voice.Voice中,处理合成器的发音。
age
发音人的年龄,默认为None
gender
以字符串为类型的发音人性别: male, female, or neutral.默认为None
id
关于Voice的字符串确认信息. 通过 pyttsx.engine.Engine.setPropertyValue()来设置活动发音签名. 这个属性总是被定义。
languages
发音支持的语言列表,如果没有,则为一个空的列表。
name
发音人名称,默认为None.
更多测试
朗读文本
import pyttsxengine = pyttsx.init()engine.say('Sally sells seashells by the seashore.')engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
事件监听
import pyttsxdef onStart(name): print 'starting', namedef onWord(name, location, length): print 'word', name, location, lengthdef onEnd(name, completed): print 'finishing', name, completedengine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
打断发音
import pyttsxdef onWord(name, location, length): print 'word', name, location, length if location > 10: engine.stop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
更换发音人声音
engine = pyttsx.init()voices = engine.getProperty('voices')for voice in voices: engine.setProperty('voice', voice.id) engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
语速控制
engine = pyttsx.init()rate = engine.getProperty('rate')engine.setProperty('rate', rate+50)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
音量控制
engine = pyttsx.init()volume = engine.getProperty('volume')engine.setProperty('volume', volume-0.25)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()
执行一个事件驱动循环
engine = pyttsx.init()def onStart(name): print 'starting', namedef onWord(name, location, length): print 'word', name, location, lengthdef onEnd(name, completed): print 'finishing', name, completed if name == 'fox': engine.say('What a lazy dog!', 'dog') elif name == 'dog': engine.endLoop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engine.startLoop()
使用一个外部的驱动循环
engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engin(www.alOnely.Com.Cn)e.startLoop(False)# engine.iterate() must be called inside externalLoop()externalLoop()engine.endLoop()
总结
以上就是Python如何实现文本转语音的全部内容,看完了上面的讲述,是不是感觉Python实现文本转语音还是蛮简单的?那么,大家快来尝试尝试吧。希望本文对大家学习Python有所帮助。
用Python操作Word文档,看这一篇就对了!
1. 新建文档:启动Python,虽然初始运行Word可能被隐藏,但只需调整设置即可。然后,我们可以直接在交互环境中输入文字,这是通过Word底层的COM组件对象模型实现的。2. 选择与查看:在Word中,光标焦点和选择范围(Selection)是核心概念。通过Selection对象,我们可以查看和操作选择区域,如查看选择内容,如's...
如何把doc文件转换成PDF格式?
"1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是否更改文件名,然而在保存类型中选择*.doc选项。4.全部设置完成点击开始转换,确定自己设置好路径、更改文件名和保存类型即可。5.转换完成之后的word文档同样可以通过迅捷pdf转换器重新转换成一开始的pdf文档。"1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是...
利用Python对Word的读写操作
为了操作Word文件,首先需安装Python-docx库。可通过命令"pip install python-docx"进行安装。下面将通过代码演示具体操作步骤,以便更好地理解。成功安装后,将生成预设名称的Word文档。以下示例显示了操作后的文档截图,由于未完成分页,因此有两张截图。可以根据需求调整内容。为加深理解,接下来将通过一个...
一篇就够!python 操作 word 文档,使用 python-docx 落地实现
准备工作就绪后,我们开始编码之旅。创建文档是第一步,比如添加标题,利用`add_heading()`函数;接着是添加文本,使用`add_paragraph()`插入段落,并通过`add_run()`追加内容。段落前的文本插入和分页符的添加也尤为重要。列表功能也很强大,包括无序列表和有序列表的添加。图片插入则通过`add_picture...
Python操作Word文件
1. 工具与库使用Spyder 3.7版本,主要依赖的Python库包括处理Word文档的工具。2. 创建与操作首先,通过创建Document对象来创建或打开Word文档,这并不是打开实际的Word界面,而是进行操作。2.1 插入内容- 一级标题:Python无法直接识别并设置为“标题1”,需要手动操作。- 二级标题:同样手动设置为“标题...
python代码粘贴到word有颜色
python代码粘贴到word有颜色操作步骤如下:1、打开Python代码文件,并选择要复制的代码。2、打开Word文档,将光标放置在想要粘贴代码的位置。3、按下“Ctrl+V”键将代码粘贴到Word文档中。4、选中刚刚粘贴进来的整段Python代码,在顶部菜单栏找到“开始”或“样式”,然后点击“字体”。5、在弹出窗口中,...
Python自动化办公-Word操作篇
Python不仅能读取Word文档内容,如段落文本,还能解析更复杂的元素,如表格数据。例如,通过Python,你可以轻松抓取文档中的表格信息,进行数据处理或分析。不仅如此,Python还能向Word文档写入丰富的内容。你可以为文档添加标题,编写段落文字,甚至插入图片、表格,以及实现分页功能。每种元素的添加都只需简单的...
实现python文本写入word
import pyttsxdef onWord(name, location, length): print 'word', name, location, length if location > 10: engine.stop()engine = pyttsx.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()更换发音人声音 engine = pyttsx.init()voices = engine....
如何将现有的数据利用python 填入word的表格中?
在使用word中的一个自然段,就是一个paragraph,最简单的方式如下命令获得全部的段落,这是一个可迭代的类型,类似于数组方式。就可以直接获得文章中的第一段第一段的全部文字内容,如果我们连贯起来代码如下获得run其实也是非常简单的如下命令python-docx这个包,不仅可以读出paragraph的内容,还可以往里面写...
python如何读取word文件中的文本内容并写入到新的txt文件?
document = Document(f)打印 word 文档段落内容2进制列表 print(document.paragraphs)打开一个txt文档用来写入数据 with open('result2.txt', 'w') as fw:遍历 word 段落内容列表 for context in document.paragraphs:以换行符转换成列表 text = context.text.split('\n')按行写入,同时换行 fw....
python-docx处理word文档
要操作Word文档,首先需要安装python-docx模块。新建文档时,可以使用Document类,如创建一个空白文档:<!-- 新建文档代码 --> 编辑现有文档时,记得保存更改。如果保存的文件名与原文件不同,会生成一个副本;若文件名一致,则会无提示地保存修改。添加段落、标题、分页符、表格等功能也非常直观,例如插入...