掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1115|回复: 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  y0 t4 ?; Y) U; C$ N. h$ G* |! \* e0 |
    macOS的自带词典,可以用Pyglossary转换成其他格式。不过可能不是所有人都有需要得到完整的词典内容,而只是想通过编程查询释义的话,可以用Python的Objective-C的绑定(可以简单理解成是Python和Objective-C沟通的中介)来实现。
    % J  p8 P6 i5 T  s4 ?
    ! _. ^- J. D4 q) v( }* I* x4 y先用pip安装绑定:4 m. X  Q  g  p- G# ?+ N* L
    1. pip install pyobjc
    复制代码
    . W9 [& w. q/ L3 D$ X+ l) N
    然后要一小段代码来测试一下:- j  s% E" Z( q( x
    1. from CoreServices import DictionaryServices: e& s; c* X# A- |6 V3 {8 O

    2. $ {3 U, z6 t; I( o  B
    3. ! f$ ?: {" X1 z6 g2 H6 j
    4. def main():
      9 Y' H# \" n8 W( H, ?$ M
    5.     query = input('Lookup:')
      2 d8 N' V8 \( r
    6.     word_range = (0, len(query))3 t$ T9 _+ J- S7 j% v% C4 H  I
    7.     definition = DictionaryServices.DCSCopyTextDefinition(None, query, word_range)
      8 w. v" j3 Z' z2 M# {  u5 i
    8.     if not definition:* s4 H( q3 M/ B6 Z, S0 x* ]
    9.         errmsg = "'%s' not found in Dictionary." % (query)
      ! L0 d, k3 n" O3 A3 B7 J* n
    10.         print(errmsg)
      ' @& z4 i. ?" j* \. K5 q) i0 b% D
    11.     else:
      , t+ }3 ?1 }/ z# a8 _
    12.         print(definition)
      % [& ~+ q# Q$ `

    13. % K9 O" m; y+ K( M" Y
    14. 5 S, c9 x2 C/ ~3 Z
    15. if __name__ == '__main__':) l% \! _  S1 W& x8 ^
    16.     main()
        H2 a. `3 A2 V0 e7 i3 _1 W
    复制代码
    3 U1 b, E2 U4 W; v* q0 w

    3 j7 c0 v$ a$ Y1 W就可以看到单词的释义了:)
  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 690 天

    [LV.9]以坛为家II

    发表于 2021-9-21 11:27:26 | 显示全部楼层
    errmsg = "'%s' not found in Dictionary." % (query)
    9 e- ~4 [9 j) s" \1 n* M# c% t2 F. D7 }2 a6 \+ x+ C6 V
    楼主用的是啥版本的python?, C$ m% g& P2 ~! Q( h! K
    ( Q. d3 `4 j7 O: B6 }3 U
  • TA的每日心情
    慵懒
    2021-9-1 08:46
  • 签到天数: 61 天

    [LV.6]常住居民II

     楼主| 发表于 2021-9-23 15:38:33 | 显示全部楼层
    Bartleby 发表于 2021-9-21 11:27" M! K3 a+ B4 |' Y
    errmsg = "'%s' not found in Dictionary." % (query)0 X, N7 ^) b+ A0 G

    $ }  u( b. }6 v楼主用的是啥版本的python?

    ' T' V( i  _& {: S# Q' v8 t这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary'
  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 690 天

    [LV.9]以坛为家II

    发表于 2021-9-23 16:22:05 | 显示全部楼层
    zhangchaont 发表于 2021-9-23 15:38
    9 u; b  u, B8 _8 R, }这个一直可以用这个写法的啊,不过现在更好的写法是f'{query} not found in Dictionary' ...

    ' h4 J4 [" p9 j- kPython 3.6及其以上,最简洁的写法就是f-string,
    # T) v* t6 x& v( X6 }5 P% N  M5 o& K8 e) f( d
    不过%s, %d这种写法,在特殊情况下,也非常有用。
    6 H( U* T0 a" ^6 N  S+ O
    % D2 s) O. J- I  d& ^. L5 _% G! B1 ?
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-2 19:45 , Processed in 0.020311 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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