吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2111|回复: 25
收起左侧

[Python 转载] 使用Python翻译单词

 关闭 [复制链接]
lgb446023743 发表于 2023-6-25 21:40
本帖最后由 lgb446023743 于 2023-6-26 09:15 编辑

一个简单案例,使用Python翻译Excel单词,准备一个Excel,第一行写上要翻译的单词
[Python] 纯文本查看 复制代码
import os

import requests
from lxml import etree
from openpyxl import load_workbook
from openpyxl.styles import Alignment
from openpyxl.styles import Font
from openpyxl.styles import Side, Border


def get_phonetic():
    print('********' * 10)
    print('欢迎来到单词音标批量自动生成小程序!')
    print('注意事项: \n'
          '1.请确保你的网络通畅!\n'
          '2.请确保你的文件后缀格式为xLsx而非csv!\n'
          '3.请确保你的单词全部在第列!\n'
          '4. 运行过程漫长请耐心等待,不要中途退出,否则不会得到任何结果!\n'
          )
    while True:
        # 用户设置阶段
        try:
            file = input('请输入你的excel文件所在目录和文件名(比如: F:/我的单词本):') + '.xlsx'  # 输入你的excel表格的文件存储位置

            if not os.path.exists(file):  # 判断文件是否存在
                print('你输入的文件路径有误,请重新输入! ')
            else:
                print('********' * 10)

            print('********文件导入成功!********')

            break
        except NameError:
            print('你输入的文件路径有误,请重新输入! ')

    workbook = load_workbook(file)  # 导入excel表格
    worksheet = workbook['Sheet1']  # 读取excel 中的sheet1这张表
    worksheet.insert_cols(idx=2, amount=2)  # 向右插入两列准备存放数据,idx:插 入列的位置,amount: 插入的列数
    worksheet.insert_rows(idx=0, amount=1)  # 在顶部插入一行写入注释,idx ;插入行的位置,amount:插 入的行数
    worksheet['A1'] = '单词'  # 如果你的单词本第一行原本就有这些注释就不用这代码了,直接删掉就行
    worksheet['B1'] = '英音'
    worksheet['C1'] = '美音'
    worksheet['D1'] = '释义'
    font = Font(name='微软雅黑', size=20, bold=False)  # 设置全局字体大小样式
    worksheet['A1'].font = font
    worksheet['B1'].font = font
    worksheet['C1'].font = font
    worksheet['D1'].font = font
    alignment = Alignment(horizontal="left")  # 设置单元格对齐方式,用于修复墨墨词库CSV文件项部两处单元格的对齐异常问题
    worksheet['A2'].alignment = alignment  # 如果不需要此代码可删除
    worksheet['D2'].alignment = alignment  # 如果不需要此代码可删除
    border = Border(Side(style=None))  # 设置单元格边框样式,用于修复墨墨词库CSV文件项部两处单元格的边框异常问题
    worksheet['A2'].border = border  # 如果不需要此代码可删除
    worksheet['D2'].border = border  # 如果不需要此代码可删除
    worksheet.column_dimensions['A'].width = 30  # 设置全局列宽
    worksheet.column_dimensions['B'].width = 30
    worksheet.column_dimensions['C'].width = 30
    worksheet.column_dimensions['D'].width = 30
    workbook.save(file)

    row_index = 2  # 默认结果放到第行开始

    for row in worksheet.iter_rows(min_row=2, max_col=3):  # 以行迭代(鼓小第二行 ,最多第3列)
        word = row[0].value  # 获取第列所有表格数据
        # 请确保你的单词在第1列,如果你的单词在第N列,请将代码换成: word = row[ 0+N].value.还要记得改其他各处代码中的数字!
        url = 'https://www.youdao.com/w/eng/{}'.format(word)  # 从有道获取音标
        try:
            data = requests.get(url).text
            html = etree.HTML(data)
            num1 = 'A' + str(row_index)
            num2 = 'B' + str(row_index)
            num3 = 'C' + str(row_index)
            num4 = 'D' + str(row_index)

            british_pron = html.xpath('//* [@id="phrsListTab"]/h2/div/span[1]/span/text()')[0]
            american_pron = html.xpath('//*[@id=”phrsListTab"]/h2/div/span[2]/span/text()')[0]
            print('正在输出:' + british_pron, american_pron)
            worksheet.cell(row=row_index, column=2).value = british_pron  # 默认将英式音标的结果放到第2列
            worksheet.cell(row=row_index, column=3).value = american_pron  # 默认将美式音标的结果放到第3列
            worksheet[num1].font = font
            worksheet[num2].font = font
            worksheet[num3].font = font
            worksheet[num4].font = font
        except Exception as e:
            print(e, word)
            num1 = 'A' + str(row_index)
            num4 = 'D' + str(row_index)

            worksheet[num1].font = font
            worksheet[num4].font = font
            row_index += 1
            workbook.save(file)
            print("单词音标已经全部转换完毕!已经成功保存在原文件:" + file)


if __name__ == '__main__':
    get_phonetic()

免费评分

参与人数 2吾爱币 +2 收起 理由
rogabet + 1 我很赞同!
xxxjw + 1 已经处理,感谢您对吾爱破解论坛的支持!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dreamrise 发表于 2023-7-20 16:13
本来想拿来直接用的,结果。。。你们没发现,没有翻译吗?
所以自己改了一遍。

import os

import requests
from lxml import etree
from openpyxl import load_workbook
from openpyxl.styles import Alignment
from openpyxl.styles import Font
from openpyxl.styles import Side, Border

def get_phonetic():
    print('********' * 10)
    print('欢迎来到单词音标批量自动生成小程序!')
    print('注意事项: \n'
          '1.请确保你的网络通畅!\n'
          '2.请确保你的文件后缀格式为xLsx而非csv!\n'
          '3.请确保你的单词全部在第列!\n'
          '4. 运行过程漫长请耐心等待,不要中途退出,否则不会得到任何结果!\n'
          )
    while True:
        # 用户设置阶段
        try:
            # file = input('请输入你的excel文件所在目录和文件名(比如: F:/我的单词本):') + '.xlsx'  # 输入你的excel表格的文件存储位置
            file = '龙龙单词.xlsx'

            if not os.path.exists(file):  # 判断文件是否存在
                print('你输入的文件路径有误,请重新输入! ')
            else:
                print('********' * 10)

            print('********文件导入成功!********')

            break
        except NameError:
            print('你输入的文件路径有误,请重新输入! ')

    workbook = load_workbook(file)  # 导入excel表格
    worksheet = workbook['Sheet1']  # 读取excel 中的sheet1这张表
    # 向右插入两列准备存放数据,idx:插 入列的位置,amount: 插入的列数
    worksheet.insert_cols(idx=2, amount=2)
    # 在顶部插入一行写入注释,idx ;插入行的位置,amount:插 入的行数
    worksheet.insert_rows(idx=0, amount=1)
    worksheet['A1'] = '单词'  # 如果你的单词本第一行原本就有这些注释就不用这代码了,直接删掉就行
    worksheet['B1'] = '英音'
    worksheet['C1'] = '美音'
    worksheet['D1'] = '释义'
    font = Font(name='微软雅黑', size=20, bold=False)  # 设置全局字体大小样式
    worksheet['A1'].font = font
    worksheet['B1'].font = font
    worksheet['C1'].font = font
    worksheet['D1'].font = font
    # 设置单元格对齐方式,用于修复墨墨词库CSV文件项部两处单元格的对齐异常问题
    alignment = Alignment(horizontal="left")
    worksheet['A2'].alignment = alignment  # 如果不需要此代码可删除
    worksheet['D2'].alignment = alignment  # 如果不需要此代码可删除
    border = Border(Side(style=None))  # 设置单元格边框样式,用于修复墨墨词库CSV文件项部两处单元格的边框异常问题
    worksheet['A2'].border = border  # 如果不需要此代码可删除
    worksheet['D2'].border = border  # 如果不需要此代码可删除
    worksheet.column_dimensions['A'].width = 30  # 设置全局列宽
    worksheet.column_dimensions['B'].width = 30
    worksheet.column_dimensions['C'].width = 30
    worksheet.column_dimensions['D'].width = 30
    workbook.save(file)

    row_index = 2  # 默认结果放到第行开始

    for row in worksheet.iter_rows(min_row=2, max_col=3):  # 以行迭代(鼓小第二行 ,最多第3列)
        word = row[0].value  # 获取第列所有表格数据
        # 请确保你的单词在第1列,如果你的单词在第N列,请将代码换成: word = row[ 0+N].value.还要记得改其他各处代码中的数字!
        url = 'https://www.youdao.com/w/eng/{}'.format(word)  # 从有道获取音标
        try:
            data = requests.get(url).text
            html = etree.HTML(data)
            num1 = 'A' + str(row_index)
            num2 = 'B' + str(row_index)
            num3 = 'C' + str(row_index)
            num4 = 'D' + str(row_index)

            british_pron = html.xpath(
                '//* [@id="phrsListTab"]/h2/div/span[1]/span/text()')[0]
            american_pron = html.xpath(
                '//*[@id="phrsListTab"]/h2/div/span[2]/span/text()')[0]
            trans_pron = html.xpath(
                '//div[@id="phrsListTab"]/div[@class="trans-container"]/ul')[0].xpath("string(.)")

            print('正在输出:' + british_pron, american_pron, trans_pron)

            # 默认将英式音标的结果放到第2列
            worksheet.cell(row=row_index, column=2).value = british_pron
            # 默认将美式音标的结果放到第3列
            worksheet.cell(row=row_index, column=3).value = american_pron
            # 默认将翻译的结果放到第4列
            worksheet.cell(row=row_index, column=4).value = trans_pron
            worksheet[num1].font = font
            worksheet[num2].font = font
            worksheet[num3].font = font
            worksheet[num4].font = font
            worksheet[num1].font = font
            worksheet[num4].font = font
            row_index += 1

        except Exception as e:
            print(e, word)
            num1 = 'A' + str(row_index)
            num4 = 'D' + str(row_index)

    workbook.save(file)
    print("单词音标已经全部转换完毕!已经成功保存在原文件:" + file)

if __name__ == '__main__':
    get_phonetic()

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
lgb446023743 + 2 + 1 我很赞同!

查看全部评分

jessylake 发表于 2023-6-26 08:49
是建立一个excel表,第一列输入单词就能获取音标和释义吗?我运行后怎么没出现音标和释义?
头像被屏蔽
tl;dr 发表于 2023-6-25 22:25
vethenc 发表于 2023-6-25 23:17
感谢分享,学习一下
gngn39 发表于 2023-6-25 23:34
很实用的
CRG_44 发表于 2023-6-26 08:17
借鉴学习一下
lingwushexi 发表于 2023-6-26 08:53
感谢分享,学习一下
yu520 发表于 2023-6-26 09:00
博主这个是怎么使用?没有看懂
Dell7447 发表于 2023-6-26 09:09
感谢分享,学习中
jessylake 发表于 2023-6-26 10:48

实用吗?我怎么抓不出东西来
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 21:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表