掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 686|回复: 3

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

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

    [LV.6]常住居民II

    发表于 2021-9-20 16:33:21 | 显示全部楼层 |阅读模式
    本帖最后由 zhangchaont 于 2021-9-20 16:38 编辑 1 R. R& t# {$ v: E. @: v7 L0 ]
    1 f! p0 V4 t4 c2 J
    macOS的自带词典,可以用Pyglossary转换成其他格式。不过可能不是所有人都有需要得到完整的词典内容,而只是想通过编程查询释义的话,可以用Python的Objective-C的绑定(可以简单理解成是Python和Objective-C沟通的中介)来实现。
    " f1 L2 I$ o0 _9 H* ?$ c8 ^' F" L( J  k1 M1 l! H6 ~
    先用pip安装绑定:
    - M9 d- e1 p$ }
    1. pip install pyobjc
    复制代码
    ) Q- v/ D, w* t/ d, |
    然后要一小段代码来测试一下:+ e  N+ U" m1 p1 T6 T' |0 T
    1. from CoreServices import DictionaryServices
      6 `2 j7 F( f5 _- J( Q5 W, c' X
    2. 1 b% M: W& Z" v' w3 z

    3. ! E+ ]1 `4 v, ^' Z0 N* S8 y0 M
    4. def main():$ U$ v) y/ x% F) y& L
    5.     query = input('Lookup:')
      ' p' s; J) v# X3 a" g6 ^: y
    6.     word_range = (0, len(query))
      : X6 v  I- h6 y( X+ x
    7.     definition = DictionaryServices.DCSCopyTextDefinition(None, query, word_range)0 q0 o1 b; X* f" \9 D; q4 [! t
    8.     if not definition:
      $ B4 q4 }9 ^. U6 C+ c1 f7 W) ~# p0 h
    9.         errmsg = "'%s' not found in Dictionary." % (query)2 M7 D) V: ]+ g$ ?# W  K$ _
    10.         print(errmsg)
      2 X) j- g* m' X6 A$ o  ~7 \( s
    11.     else:
      1 D$ F7 e: L! C7 P( i
    12.         print(definition)  h* p' O$ T2 A7 r) f& Z
    13. ( M* ~; n' p# [4 T9 i

    14. $ p7 g% ^* D6 @6 Y- ^; f; H, v$ [
    15. if __name__ == '__main__':
      & ]  s8 K" j/ _" d
    16.     main()4 a; Y$ W* U, h' f: e* t3 W" l
    复制代码
    ( a) y- |. g6 k, Q: H# E. P
    - k) w  t& ]# k" l2 o
    就可以看到单词的释义了:)
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 635 天

    [LV.9]以坛为家II

    发表于 2021-9-21 11:27:26 | 显示全部楼层
    errmsg = "'%s' not found in Dictionary." % (query)
    4 J/ c7 ?5 B' Y2 e
    % x6 [/ u* ?+ \7 N7 e楼主用的是啥版本的python?
    - T( u8 s& o6 Q: \0 q, w
    0 l8 M$ p- C' X% E
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

     楼主| 发表于 2021-9-23 15:38:33 | 显示全部楼层
    Bartleby 发表于 2021-9-21 11:27- `$ a1 D3 @2 B, ]& i8 o; x4 Z
    errmsg = "'%s' not found in Dictionary." % (query)
    " D* \+ e& @& K: Y4 ~0 O$ o8 Z' G- m5 E* S% B
    楼主用的是啥版本的python?

    + d2 k7 M( u' J" _这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary'
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 635 天

    [LV.9]以坛为家II

    发表于 2021-9-23 16:22:05 | 显示全部楼层
    zhangchaont 发表于 2021-9-23 15:38: h! t* U8 d  V! D4 K
    这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary' ...

    / w0 t0 d$ {* i3 Y+ GPython 3.6及其以上,最简洁的写法就是f-string,
    , o2 m% ^% b1 C+ \2 y1 i( w& \9 `5 O% }, u6 h
    不过%s, %d这种写法,在特殊情况下,也非常有用。
    * c0 p/ X  `* X
    0 D1 |( h- n* H# i' s" b
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-5 00:21 , Processed in 0.041928 second(s), 8 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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