In your example, each line has three words in it, with the last "word" also being an integer - but if we read those lines in, they will be of the string-type persuasion; so we'd have to cast that last word to do arithmetic with it. Which is not part of your question, just to clarify what the code below will be doing and not doing.
We will use the split function that the string library provides to look for (hence the variable is named 'look' - nomen est omen) the string "Fire" - imagine this as being passed in as your user input you mentioned. Then we assume we got the text (variable named 'text') from somewhere with the three lines in it you posted as example. Of course the "\n"-bit of the string is the escape sequence for a newline-character.
This is also the argument we pass to the split function, which - nomen es omen - splits up our string at each occurrence of the passed in delimiter, meaning any newline characters. The result is an array with each line as an element in it.
We then loop over these, use split again to separate the words - here I used a space, you might want to use a TAB ("\t").
We check there are 3 words in the result of that split and whether or not the second word (index: 0, 1, 2 for the three elements) is equal to the string we are looking for … if so: you have reached your goal
from string import split
look = "Fire"
text = "Cute Stack 10\nDog Fire 384\nPhone Real 485\n"
list = text.split("\n")
for line in list:
words = list.split(" ")
if( len(words) == 3 && words[1] == look ):
print line