查看: 292|回复: 3
打印 上一主题 下一主题

[教程] 得到macOS自带词典释义的简单办法

[复制链接]
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    141

    回帖

    4080

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4080

    QQ 章

    跳转到指定楼层
    1
    发表于 2021-9-20 16:33:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 zhangchaont 于 2021-9-20 16:38 编辑

    macOS的自带词典,可以用Pyglossary转换成其他格式。不过可能不是所有人都有需要得到完整的词典内容,而只是想通过编程查询释义的话,可以用Python的Objective-C的绑定(可以简单理解成是Python和Objective-C沟通的中介)来实现。

    先用pip安装绑定:
    1. pip install pyobjc
    复制代码

    然后要一小段代码来测试一下:
    1. from CoreServices import DictionaryServices


    2. def main():
    3.     query = input('Lookup:')
    4.     word_range = (0, len(query))
    5.     definition = DictionaryServices.DCSCopyTextDefinition(None, query, word_range)
    6.     if not definition:
    7.         errmsg = "'%s' not found in Dictionary." % (query)
    8.         print(errmsg)
    9.     else:
    10.         print(definition)


    11. if __name__ == '__main__':
    12.     main()
    复制代码


    就可以看到单词的释义了:)
  • TA的每日心情
    奋斗
    6 天前
  • 签到天数: 605 天

    [LV.9]以坛为家II

    74

    主题

    1124

    回帖

    8618

    积分

    进士

    Rank: 8Rank: 8

    积分
    8618
    2
    发表于 2021-9-21 11:27:26 | 只看该作者
    errmsg = "'%s' not found in Dictionary." % (query)

    楼主用的是啥版本的python?

  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    141

    回帖

    4080

    积分

    贡士

    Rank: 6Rank: 6

    积分
    4080

    QQ 章

    3
     楼主| 发表于 2021-9-23 15:38:33 | 只看该作者
    Bartleby 发表于 2021-9-21 11:27
    errmsg = "'%s' not found in Dictionary." % (query)

    楼主用的是啥版本的python?

    这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary'
  • TA的每日心情
    奋斗
    6 天前
  • 签到天数: 605 天

    [LV.9]以坛为家II

    74

    主题

    1124

    回帖

    8618

    积分

    进士

    Rank: 8Rank: 8

    积分
    8618
    4
    发表于 2021-9-23 16:22:05 | 只看该作者
    zhangchaont 发表于 2021-9-23 15:38
    这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary' ...

    Python 3.6及其以上,最简洁的写法就是f-string,

    不过%s, %d这种写法,在特殊情况下,也非常有用。