Text mining for text matching
FuzzyWuzzy would be a good python library for this purpose. A code example from the GitHub readme:

&gt;&gt;&gt; choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
&gt;&gt;&gt; process.extract("new york jets", choices, limit=2)
    [('New York Jets', 100), ('New York Giants', 78)]
&gt;&gt;&gt; process.extractOne("cowboys", choices)
    ("Dallas Cowboys", 90)


I imagine you would like to use the extract function with limit 5 with choices being set equal to all the 'official names' from your table2 csv file. 

Details on installation and use are at the link above.