python抓取word里的拼音_[DIY]给word中的汉字批量加、修改拼音(word全篇加拼音)(旧版VBA程序,缺点比较多)...

缘起:师兄发起印经,需要给word电子版的经书全文加注音。

(新增golang版本的程序;

比vba快,大文档用vba的能跑好几天,

用golang的几秒就处理完,还不会因为中文标点出错;

另有修改指定词组读音等程序;

请参看:

word自带的加注音只能一次加30个字,一本经书有两万四千多字。网上找了下,好像没有现成的软件,但是python可以很简单的把汉字转换成带声调的拼音。再结合office的vba宏录制,摸索了一下,弄出了个批量给word加注音的脚本。分享如下:

效果

一、python汉字转拼音

1.首先需要下载、安装python环境。我安装的python3.8版本。这一步很简单,搜索一下,下载安装就可以了。【记得安装过程中,把“加入环境变量”这个选项勾上。】

2.安装python的拼音库

网上有两个版本的python汉字转拼音的demo,一个是基于pypinyin库的,另一个是基于xpinyin库的。

基于xpinyin库的试出来拼音不带声调,后来用的pypinyin库。

安装完python之后,打开命令行(CMD),输入如下安装命令:

pip install pypinyin

然后等待安装完成。这个过程需要联网。

3.将下面代码复制下来,保存到D盘下,名为wordTOPinyin.py,即:(d:/wordToPinyin.py)。

(保存路径可以是其它,但需要同时修改后面VBA代码中脚本的路径)

import sys, getopt

import pypinyin

word = sys.argv[1:]

s = ''

for i in pypinyin.pinyin(word):

s = s + ''.join(i) + " "

print(s)

二、VBA宏,给汉字加注音

MS office默认就安装了VBA开发环境,用Alt+F11打开VBA编辑器。

WPS需要单独安装一个VBA_for_WPS的包,需要网上找一下。也是用Alt+F11打开VBA编辑器。

VBA代码:

Attribute VB_Name = "wordToPinyinByBlockSpecified"

Option Explicit

Public Declare Function timeGetTime Lib "winmm.dll" () As Long

Public g_manualCharSet As Object

Public g_specifiedCharSet As Object

Public g_exceptionCharSet As Object

Function isNeedZhuyin(ByVal tmpChar) As Boolean

' 非汉字,跳出

If LenB(StrConv(tmpChar, vbFromUnicode)) <> 2 Then

isNeedZhuyin = False

Exit Function

End If

' 手动指定字符 和 例外字符 两种模式,有点像黑白名单,没有做成优先级的方式,简单点,二选一就可以了

If True Then

' 特殊符号不需要加注音,跳出

If "" <> g_exceptionCharSet(tmpChar) Then

isNeedZhuyin = False

Exit Function

End If

isNeedZhuyin = True

Exit Function

Else

'是指定的字才加注音

If "" <> g_specifiedCharSet(tmpChar) Then

isNeedZhuyin = True

Exit Function

End If

isNeedZhuyin = False

Exit Function

End If

End Function

Function initExceptionCharSet()

Set g_exceptionCharSet = CreateObject("Scripting.Dictionary")

'不需要加注音的字符,加到这个集合里

g_exceptionCharSet.Add "。", "ok"

g_exceptionCharSet.Add ",", "ok"

g_exceptionCharSet.Add "、", "ok"

g_exceptionCharSet.Add ";", "ok"

g_exceptionCharSet.Add "…", "ok"

g_exceptionCharSet.Add "?", "ok"

g_exceptionCharSet.Add "(", "ok"

g_exceptionCharSet.Add ")", "ok"

g_exceptionCharSet.Add "(", "ok"

g_exceptionCharSet.Add ")", "ok"

g_exceptionCharSet.Add ":", "ok"

g_exceptionCharSet.Add ":", "ok"

g_exceptionCharSet.Add " ", "ok"

g_exceptionCharSet.Add "[", "ok"

g_exceptionCharSet.Add "]", "ok"

g_exceptionCharSet.Add "-", "ok"

g_exceptionCharSet.Add "+", "ok"

g_exceptionCharSet.Add "*", "ok"

g_exceptionCharSet.Add "《", "ok"

g_exceptionCharSet.Add "》", "ok"

g_exceptionCharSet.Add "【", "ok"

g_exceptionCharSet.Add "】&

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值