0

如何在运行时在 pprint 中传递值?

import nltk, sys
from pprint import pprint
from nltk.corpus import framenet as fn
#Word = raw_input("enter a word: ")
pprint(fn.frames(r'(?i)Medical_specialties'))
f = fn.frame(256)
f.ID
f.name
f.definition
print f
print '\b'
pprint(sorted([x for x in f.FE]))
pprint(f.frameRelations)
print

在运行时,我需要从用户那里获取一个单词并将其传递给 fn.frames 函数来代替 Medical_specialties,该函数又会抛出一个帧列表作为与该单词相关的帧 ID。然后我可以拨打这些号码进一步查询。

输出:

[<frame ID=256 name=Medical_specialties>]
4

1 回答 1

1

尽管您碰巧正在使用nltk,但您的问题与它无关(或与pprint,就此而言):您需要输入用户的字符串,然后坚持"(?i)"构建您想要的正则表达式。

由于这就是您需要做的所有事情,因此最简单的解决方案是:

word = raw_input("enter a word: ")
rexp = "(?i)" + word
pprint(fn.frames(rexp))

将字符串组合在一起的更强大的方法是使用 python 的C 样式字符串格式化,或更新的format()语法。例如,要在输入“单词”之前和之后指定单词边界,您可以这样做(C 样式语法):

rexp = r"(?i)\b%s\b" % word

您可能会发现上面的链接很难消化,所以试试这个博览会这个高票数的 SO 问题。

于 2016-09-20T12:27:53.633 回答