如何在运行时传递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>]
答案 0 :(得分:1)
虽然您恰好使用nltk
,但您的问题与此无关(或者与pprint
无关):您需要从用户输入字符串,然后坚持"(?i)"
在前面构建你想要的正则表达式。
由于这就是您需要做的所有事情,最简单的解决方案是:
word = raw_input("enter a word: ")
rexp = "(?i)" + word
pprint(fn.frames(rexp))
将字符串放在一起的更强大的方法是使用python的C-style string formatting或更新的format()
语法。例如,要在输入“word”之前和之后指定单词边界,你可以这样做(C风格的语法):
rexp = r"(?i)\b%s\b" % word
您可能会发现上述链接难以消化,因此请尝试this exposition或this high-voted SO question.