使用Python翻译单词
本帖最后由 lgb446023743 于 2023-6-26 09:15 编辑一个简单案例,使用Python翻译Excel单词,准备一个Excel,第一行写上要翻译的单词
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.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/span/text()')
american_pron = html.xpath('//*[@id=”phrsListTab"]/h2/div/span/span/text()')
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.font = font
worksheet.font = font
worksheet.font = font
worksheet.font = font
except Exception as e:
print(e, word)
num1 = 'A' + str(row_index)
num4 = 'D' + str(row_index)
worksheet.font = font
worksheet.font = font
row_index += 1
workbook.save(file)
print("单词音标已经全部转换完毕!已经成功保存在原文件:" + file)
if __name__ == '__main__':
get_phonetic()
本来想拿来直接用的,结果。。。你们没发现,没有翻译吗?
所以自己改了一遍。
```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表格的文件存储位置
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.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/span/text()')
american_pron = html.xpath(
'//*[@id="phrsListTab"]/h2/div/span/span/text()')
trans_pron = html.xpath(
'//div[@id="phrsListTab"]/div[@class="trans-container"]/ul').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.font = font
worksheet.font = font
worksheet.font = font
worksheet.font = font
worksheet.font = font
worksheet.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()
``` 是建立一个excel表,第一列输入单词就能获取音标和释义吗?我运行后怎么没出现音标和释义? 感谢分享,学习一下 很实用的 借鉴学习一下 感谢分享,学习一下 博主这个是怎么使用?没有看懂 感谢分享,学习中 gngn39 发表于 2023-6-25 23:34
很实用的
实用吗?我怎么抓不出东西来:wwqwq