【每周一坑】自动翻译 | 【解答】单词本

简介: 提示:翻译功能可以通过网上的翻译 API 实现,你所要了解的就是如何发起网络请求,以及如果对返回结果进行处理。这也算是基本的爬虫操作。

上次我们挖了一个系列坑:【每周一坑】单词本


第一期的目标,是实现控制台下的单词录入及保存功能。各位都有实现吗?在本文后半段,我们会来做具体分析。

在这之前,先给出新的目标:


自动给添加的单词增加翻译、音标等信息


效果演示:



提示:翻译功能可以通过网上的翻译 API 实现,你所要了解的就是如何发起网络请求,以及如果对返回结果进行处理。这也算是基本的爬虫操作。


接口建议使用金山词霸的查词接口


http://open.iciba.com/index.php?c=wiki&t=cc


简单申请一下 key 就可以使用,还没限制。当然你也可以考虑有道或者百度翻译的接口。具体使用就是你们要解决的问题了,下次我们再来具体说。


关于网络请求,可以看这篇 requests 的介绍:《requests - 这个男人让你的爬虫开发效率提升8倍》,或在公众号(Crossin的编程教室)里回复关键字 查天气

详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

期待各位同学提交解答,更期待你能完成整个系列。

提交代码可以使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。



【解答】单词本


上次的问题,可以划分成几个部分:


  1. 通过命令行输入单词。这个用 input 就可以。
  2. 保存文件并记录添加的日期。当前日期可以从 datetime 模块的 datetime.date.today() 获取,转成字符,拼接起来后,通过基本的文件读写进行保存。
  3. 判断单词已存在。用 in 来判断。
  4. 提示现有单词总数。用列表的 len 方法。
  5. 程序可重复运行。这个类似之前的“猜数字”程序,把程序放在一个 while 循环里


综合起来:


# coding: utf8
import datetime
f = open('words.txt', 'a+')
f.seek(0)
lines = f.readlines()
words = [line.split('      ')[0] for line in lines if line.strip()]
while True:
    word = input('请输入你要记录的单词(直接回车退出程序):\n').strip()
    if not word:
        break
    if word in words:
        print('单词已存在')
    else:
        words.append(word)
        t = datetime.date.today()
        line = word + '      ' + str(t) + '\n'
        lines.append(line)
        f.write(line)
        f.flush()
    print('已记录', len(words) ,'个单词/词组\n')
f.close()


这里还需要注意的是,我用 6 个空格字符作为单词和时间的分割,你也可以用其他的方式,但注意要避免和单词字符本身产生冲突。一开始用 a+ 模式是为了避免第一次单词文件不存在时的报错。中间变量 words 是一个列表,用了存储所有已记录的单词。 strip() 方法是为了去除字符串前后多余的空白字符。每次写入之后调用 flush(),避免程序意外结束时,未保存的内容丢失。


上次有 5 位同学提交了代码:

🌜月城mooncity🌛、LY💤、帆、张赛、Nttzl


其中 LY💤 同学的代码还实现了查询和删除的功能。感谢几位同学的参与。


其他还没有完成的同学,看了本次的解答后,建议也自己动手做一遍。然后跟着我们一起继续往下做。毕竟在后台跟我咨询说学完基础不知道做什么的同学绝对不止 5 个人,但为何有了项目的时候却并没有人动手呢🤔


期待在下一期中看到你的代码!


其他内容回复左侧关键词获取:

python :零基础入门课程目录

新手 :初学者指南及常见问题

资源 :超过500M学习资料网盘地址

项目 :十多个进阶项目代码实例

如需了解视频课程及答疑群等更多服务,请号内回复 码上行动

代码相关问题可以在论坛上发帖提问 bbs.crossincode.com

推荐阅读:

抖音 | AI名画 | 押韵工具 | 虎扑 | 如何debug | 查天气 | 我用Python | 知乎 | 排序 | 电影票 | 技术宅 | 单词表 | 新手建议 | 如何提问 | 中文编程

相关文章
|
7月前
|
存储 自然语言处理 算法
算法编程(十九):词典中最长的单词
算法编程(十九):词典中最长的单词
74 0
|
6月前
|
Go
一文搞懂:【转帖】SymbolEmotionsSticker英文符号表情大全
一文搞懂:【转帖】SymbolEmotionsSticker英文符号表情大全
41 0
|
6月前
884. 两句话中的不常见单词
884. 两句话中的不常见单词
|
数据采集 自然语言处理 小程序
【每周一坑】统计英文小说词频
然而,只有我们依旧无趣地在此刻发干货文,提醒着你有没有写新的代码?有没有了解新的语法?硬生生给你五彩斑斓的周末生活蒙上一层阴影。每每想到这,我就觉得,这档子事儿还真是……
完蛋!我被LLM包围了!
欢迎来的“完蛋!我被LLM包围了”小游戏,《完蛋!我被LLM包围了!》是一款智力挑战游戏。该项目利用LLM, 基于ModelScope社区内现有的LLM对话Gradio应用程序代码,结合知乎文章《如何用“不可能”完成任务》中的预设问题,自动生成了对应的游戏代码,创造了一个独特的游戏体验。
|
流计算
IELTS学习(004) - 单词(太空探索篇)
IELTS学习(004) - 单词(太空探索篇)
56 0
|
算法 测试技术
蓝桥算法_单词分析-wordAnalysis
蓝桥算法_单词分析-wordAnalysis
|
自然语言处理 IDE 开发工具
C++常见英语单词总结(1)
C++常见英语单词总结(1)
|
存储
Leecode 1160. 拼写单词
Leecode 1160. 拼写单词
68 0
|
自然语言处理
每日一题——验证外星语词典
每日一题——验证外星语词典
91 0
每日一题——验证外星语词典