2016-09-20 55 views
0

如何在運行時傳遞pprint裏面的值?運行時調用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

這與'nltk'; P有什麼關係? – alvas

+0

它是nltk的framenet語料庫, 來自nltk.corpus import framenet作爲fn –

+0

請顯示整個代碼或至少一個最小的工作示例,以便我們可以幫助您更好。 – alvas

回答

1

雖然你碰巧與nltk來工作,你的問題無關,與它(或pprint,對於這個問題):你需要輸入一個字符串從用戶,然後在前面粘貼"(?i)"以構建您想要的正則表達式。

因爲這就是你需要做的,最簡單的辦法是這樣的:

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

一個更強大的方式來串放在一起是python的C-style string formatting,或較新的format()語法。例如,之前指定單詞邊界,並輸入「字」後,你會做這樣的(C風格的語法):

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

你可能會發現難以消化上面的鏈接,所以嘗試this expositionthis high-voted SO question.

+0

感謝您的指導。 –