简体字转繁体字------- 如何将简体字文章翻译成繁体字,并加上拼音 python

     

 

      这些天遇到了一个小问题,我的好朋友拿着一篇pdf来问我,如何把里面的简体字提取出来,翻译成繁体字,同时保留原来的拼音呢。一开始她用word打开pdf然后使用翻译功能,但效果并不好。作为一个预备软件工程师,当然会想到写一个程序来解决问题!

当然第一想法就是写不如抄啦,火速搜索了一下,发现已经有人帮我把主要处理模块写好了:

点击这里跳转

所以我的任务就更简单了,由于我要处理的是文本文件,所以我自己完成文件处理模块,然后服用链接的代码就ojbk了

首先我们观察要处理的这个pdf:

它在用word打开,然后转为txt格式后,会出现一个格式上的问题:

我们发现拼音和文字处于同一行了,而且拼音带上了括号。所以我们要提前做一个预处理工作,把所有的文字提取出来,保留除了括号以外的符号。

def reader(file_name):
    with open(file_name, 'r', encoding='utf-8') as file_obj:
        content = file_obj.read()
        # print(content)
        file_obj.close()
    return content


#使用api
line_chs = reader("input.txt")

#定义处理所有的括号的函数
def get_words(ret_chs):
    nr = ""
    i = 0
    while i < len(ret_chs):
        if ret_chs[i] != '(':
            nr = nr + ret_chs[i]
            i = i + 1
        else:
            while i < len(ret_chs) and ret_chs[i] != ')':
                i = i + 1
            i = i + 1

    return nr

def writer(file_name, content):
    with open(file_name, 'w', encoding='utf-8') as file_obj:
        file_obj.write(content)
        file_obj.close()




# 转换繁体到简体
def cht_to_chs(line):
    line = Converter('zh-hans').convert(line)
    line.encode('utf-8')
    return line


# 转换简体到繁体
def chs_to_cht(line):
    line = Converter('zh-hant').convert(line)
    line.encode('utf-8')
    return line


#简体转繁体
ret_chs = chs_to_cht(line_chs)
#获取没有括号的文字段
nr=get_words(ret_chs)
writer("output2.txt", nr)

将文件保存,展示一下效果:

 

然后就是添加拼音的环节了,我们需要拼音库:

import pypinyin

 考虑到文字和拼音的易读性,我们要调整间距,使得排版较为好看,我的做法是给每个文字中间加空格:

def pinyin(word):
    s = ''
    for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):
        s += ''.join(i)
    return s


def split_line(word):
    s = ''
    for i in word:
        s += i
        if i == ' ':
            continue
        s += " "
    return s

#把所有output2里面的文字按行为单位,放入列表中 便于格式控制
usr_list = []
for line in open("output2.txt", 'r', encoding='utf-8'):
    s = ''
    for i in line:
        s = s + ''.join(i) + " "
    usr_list.append(s)

#获得所有的字的拼音
pinyin_list = []
for line in usr_list:
    pinyin_list.append(yinjie(line))

words = []
for line in usr_list:
    words.append(split_line(line))

#给字加空格
words = []
for line in usr_list:
    words.append(split_line(line))

#一行拼音 一行文字的打印
i = 0

with open("finaloutput.txt", 'w', encoding='utf-8') as file_obj:
    while i < len(usr_list):
        print(pinyin_list[i])
        file_obj.write(pinyin_list[i])
        file_obj.write(words[i])
        print(words[i])
        i += 1
    file_obj.close()

然后我们看到程序运行的结果:

虽然还不是很好看,但已经很好的完成预定目标了

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值