2016-09-20 5 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 вместо Медицинские_специальности, который, в свою очередь, проливает список кадров в качестве кадра ID соответствующего слову. Затем я могу вызвать эти числа для дальнейшего запроса.

Выход:

[<frame ID=256 name=Medical_specialties>] 
+0

как это имеет отношение к 'nltk'; P? – alvas

+0

Это каркас для nltk, от nltk.corpus import framenet as fn –

+0

Пожалуйста, покажите весь код или, по крайней мере, минимальный рабочий пример, чтобы мы могли помочь вам лучше. – alvas

ответ

1

Хотя случается работать с nltk, ваш вопрос не имеет ничего общего с ним (или с pprint, по этому вопросу): Вы должны ввести строку от пользователя , затем вставьте "(?i)" спереди, чтобы создать нужное регулярное выражение.

Так что все, что вам нужно сделать, самое простое решение заключается в следующем:

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

Более мощный способ соединить строки это с Питона C-style string formatting или более новой format() синтаксиса. Например, чтобы указать границы слов до и после ввода «слово», вы могли бы сделать это так (синтаксис C-стиль):

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

Вы, вероятно, найти ссылки выше трудно переваривается, поэтому попробуйте this exposition или this high-voted SO question.

+0

Спасибо за руководство. –