前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每周一坑】数据库 +【解答】自动翻译

【每周一坑】数据库 +【解答】自动翻译

作者头像
Crossin先生
发布2019-03-06 16:35:14
7730
发布2019-03-06 16:35:14
举报
文章被收录于专栏:Crossin的编程教室

使用数据库存储单词数据

交互效果与之前相同,不再做展示。只是更换了存储方式:

虽然目前这段小代码并不非要用数据库,但对于功能复杂、数据庞大应用来说,数据库是很有必要的。之后我们这个工具还要做更多扩展,数据库会便于读写数据,所以我们不妨现在就做好准备。

如果你之前没有数据库使用经验,我建议可以从 sqlite 开始。这是个极简的数据库,mac 自带,windows 安装也很容易,python 内置相关调用模块。之前也有文章做过介绍:

Python 实战(2):简单的数据库

像对象一样对待数据

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

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

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

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


【解答】单词本 2 - 自动翻译

翻译的接口上次给过:

http://dict-co.iciba.com/api/dictionary.php?key=1234567&type=json&w=hello

key 需要你申请一下替换掉,w 就是你要查的单词。返回值:

我们取其中的 音标ph_en释义parts 的内容即可。

请求用 requests 库的 get 方法,结果是 json 格式的字符串,所以用 json 方法可获取为字典类型的对象。

翻译部分参考代码:

代码语言:javascript
复制
import requests
apiurl = 'http://dict-co.iciba.com/api/dictionary.php?key=1234567&type=json&w='
# 获取中文翻译
def get_chs(word):
    url = apiurl + word
    try:
        # 请求并获取翻译
        r = requests.get(url)
        data = r.json()
        symbol = data['symbols'][0]
        ph = symbol.get('ph_en', '')
        means = symbol.get('parts', [])
        # 无翻译
        if not ph and not means:
            print('未找到中文翻译')
            return ''
        # 拼接音标和释义
        means_str = []
        for m in means:
            means_str.append(m['part'] + ';'.join(m['means']))
        all_mean = ' | '.join(means_str)
        return '[' + ph + '] ' + all_mean
    except:
        # 请求异常
        print('获取中文失败')
        return ''
chs = get_chs(word)

与上一次合并的完整代码已上传,获取可在公众号里回复关键字 单词本

上次 @张赛@Nttzl 两位同学提交了代码,实现了相应功能。不过有些需要注意的小细节:

  1. 要做好异常情况的处理,比如添加的单词如果没有找到对应释义,得保证程序能正常运行不会崩
  2. 提交代码时不要上传 key、账号、密码 等敏感信息(有大厂程序员也犯过这样的错误)

放寒假了,大家可以动起手来了

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档