掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1052|回复: 3

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

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

    [LV.6]常住居民II

    发表于 2021-9-20 16:33:21 | 显示全部楼层 |阅读模式
    本帖最后由 zhangchaont 于 2021-9-20 16:38 编辑 ( b. q- G: ?2 i. o
    , b6 B; K! g5 R! K; `$ q
    macOS的自带词典,可以用Pyglossary转换成其他格式。不过可能不是所有人都有需要得到完整的词典内容,而只是想通过编程查询释义的话,可以用Python的Objective-C的绑定(可以简单理解成是Python和Objective-C沟通的中介)来实现。3 V! ]2 C, I9 S
    % V% I8 A2 ?1 a$ X
    先用pip安装绑定:/ \2 v) [6 M/ d' n: A9 \# ~3 P3 F
    1. pip install pyobjc
    复制代码
    ' ^. W& e# `# w6 E
    然后要一小段代码来测试一下:
    $ w4 i4 v6 l2 I" z
    1. from CoreServices import DictionaryServices" H6 x; x, y6 Y( c6 {

    2. 3 x* C/ m, |- M+ y+ l9 G

    3. : s, ]) _+ d8 ^: F) s: S
    4. def main():; {! w( _2 r& N$ l9 w- Z
    5.     query = input('Lookup:')
      ! s$ s! h6 V$ ?; z) Y, N) {! n
    6.     word_range = (0, len(query))
      7 g+ e. F6 A( v0 |( S# \
    7.     definition = DictionaryServices.DCSCopyTextDefinition(None, query, word_range)2 \( w6 t& a2 f6 W! Y, ]5 O
    8.     if not definition:
      # H# g" U9 S# f; I
    9.         errmsg = "'%s' not found in Dictionary." % (query)
      + a% l! C& q* S  C1 L: t
    10.         print(errmsg)
      ; O# `1 k4 z6 y
    11.     else:+ b, L0 A% Y! P4 x8 R
    12.         print(definition)8 s; }  l7 \6 T! c" c" \

    13. # v5 T: m. b5 Y8 D

    14. 0 q. T! b( X3 X
    15. if __name__ == '__main__':
        G- a& u% L: Q0 }
    16.     main()
      # J! m! `9 s! @% ?$ G
    复制代码
    ) q8 q" W8 K  Z- \8 P" q+ c! K

    ; s# ?7 P+ S9 U6 i6 c, j, E就可以看到单词的释义了:)
  • TA的每日心情
    奋斗
    14 小时前
  • 签到天数: 676 天

    [LV.9]以坛为家II

    发表于 2021-9-21 11:27:26 | 显示全部楼层
    errmsg = "'%s' not found in Dictionary." % (query)
    5 l* M" F7 C7 ^( K* {* B, j0 s% A  v2 C5 |& e0 E5 N( B
    楼主用的是啥版本的python?
    9 T0 b+ W$ d2 Q- a0 E
    * z' ^3 w( }4 c( H& z' E
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

     楼主| 发表于 2021-9-23 15:38:33 | 显示全部楼层
    Bartleby 发表于 2021-9-21 11:27' y! z: P! ^6 r( c) c
    errmsg = "'%s' not found in Dictionary." % (query)/ m: a) W3 a- [. J$ u4 m
    2 u. r, F' {3 b( Y% H
    楼主用的是啥版本的python?

    3 v9 ]) i  p" j8 w) M) h' X- G这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary'
  • TA的每日心情
    奋斗
    14 小时前
  • 签到天数: 676 天

    [LV.9]以坛为家II

    发表于 2021-9-23 16:22:05 | 显示全部楼层
    zhangchaont 发表于 2021-9-23 15:38
    * Q9 h3 }8 H! D. J! z+ @这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary' ...
    ) h2 z  B0 B  Z" C7 d' V, F
    Python 3.6及其以上,最简洁的写法就是f-string,6 U6 E( ^: O0 S' X. h; `: r
    6 m: k6 ^$ ~8 P/ H  l
    不过%s, %d这种写法,在特殊情况下,也非常有用。
    : X5 j3 l  Z! E& M2 W
    6 @4 q* t+ S2 K
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-3 15:45 , Processed in 0.020394 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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