我修改了以下脚本以满足我的需求(原始版本在Fully parsable dictionary/thesaurus找到,并由samplebias编写[在samplebias,非常有用,谢谢:)]):
import textwrap
from nltk.corpus import wordnet as wn
POS = {
'v': 'verb', 'a': 'adjective', 's': 'satellite adjective',
'n': 'noun', 'r': 'adverb'}
def info(word, pos=None):
for i, syn in enumerate(wn.synsets(word, pos)):
syns = [n.replace('_', ' ') for n in syn.lemma_names]
ants = [a for m in syn.lemmas for a in m.antonyms()]
ind = ' '*12
defn= textwrap.wrap(syn.definition, 64)
print 'sense %d (%s)' % (i + 1, POS[syn.pos])
n1=str('definition: ' + ('\n' + ind).join(defn))
n2=str(' synonyms:', ', '.join(syns))
if ants:
n3=str(' antonyms:', ', '.join(a.name for a in ants))
if syn.examples:
n4=str(' examples: ' + ('\n' + ind).join(syn.examples))
try:
resp = ("From dictionary:\n%s\n%s\n%s\n%s") %(n1, n2, n3, n4)
except:
try:
resp = ("From dictionary:\n%s\n%s\n%s") %(n1, n2, n3)
except:
try:
resp = ("From dictionary:\n%s\n%s") %(n1, n2)
except:
resp = ("Data not available...")
print
return resp
但是,我可以说我没有很好地修改它,因为它只是包含在try / except块中。但我不能为我的生活想到一个更好的方法(仍然以抽象的方式学习python)。我需要将它格式化为一个包含\ n的变量作为每行的分隔符,因为它被写入文件。任何想法我怎么能做得更好,没有列表似乎正在发生的事情?
- 定义日出
来自字典:
定义:一天中的第一个亮点
('同义词:','黎明,黎明,早晨,极光,初光,黎明,休息日,休息日,日子,日出,日出,公鸡')
('反义词:','日落')
例子:我们在黎明前起床 他们聊到早上
谢谢! :)
答案 0 :(得分:0)
不是为每一行创建一个字符串,只需从开头就将文本附加到输出变量。
resp = 'From dictionary:\ndefinition: ' + ('\n' + ind).join(defn) +'\n'
resp += ' synonyms:' + ', '.join(syns) +'\n'
if ants:
resp += ' antonyms:' + ', '.join(a.name for a in ants)) +'\n'
if syn.examples:
resp += ' examples: ' + ('\n' + ind).join(syn.examples)) +'\n'