У меня есть огромный список терминов, которые я хочу извлечь из текстового файла, и объединить их в одну из следующих групп: Животное, Искусство, Здания, Транспорт, Человек, Люди, Еда , Glass, Bottle, Signage, Slogan, DJ, Party. Я в настоящее время есть четыре слова в файле Tester2:Python - чтение текстового файла в словарь
пластинчатые пицца fearns смеситель
Вот мой код:
keyword_dictionary = {
'Animal' : ['animal', 'dog', 'cat'],
'Art' : ['art', 'sculpture', 'fearns'],
'Buildings' : ['building', 'architecture', 'gothic', 'skyscraper'],
'Vehicle' : ['car','formula','f-1','f1','f 1','f one','f-one','moped','mo ped','mo-ped','scooter'],
'Person' : ['person','dress','shirt','woman','man','attractive','adult','smiling','sleeveless','halter','spectacles','button','bodycon'],
'People' : ['people','women','men','attractive','adults','smiling','group','two','three','four','five','six','seven','eight','nine','ten','2','3','4','5','6','7','8','9','10'],
'Food' : ['food','plate','chicken','steak','pizza','pasta','meal','asian','beef','cake','candy','food pyramid','spaghetti','curry','lamb','sushi','meatballs','biscuit','apples','meat','mushroom','jelly', 'sorbet','nacho','burrito','taco','cheese'],
'Glass' : ['glass','drink','container','glasses','cup'],
'Bottle' : ['bottle','drink'],
'Signage' : ['sign','martini','ad','advert','card','bottles','logo','mat','chalkboard','blackboard'],
'Slogan' : ['Luck is overrated'],
'DJ' : ['dj','disc','jockey','mixer','instrument','turntable'],
'Party' : ['party']
}
y = 0
while (y < 1):
try:
def search(keywords, searchFor):
for item in keywords:
for terms in keywords[item]:
if searchFor in terms:
print item
with open("C:/Users/USERNAME/Desktop/tester2.txt") as termsdesk:
for line in termsdesk:
this = search (keyword_dictionary, line)
this2 = str(this)
#print this2
#print item
except KeyError:
break
y = y+1
Мои результаты должны выглядеть примерно так:
Food
Food
Art
DJ
Но вместо этого я получаю это:
DJ
Я предполагаю, что это связано с тем, что в моем цикле что-то не так. Кто-нибудь знает, что мне нужно изменить? Я попытался переместить «while (y < 1)», но я не смог получить результаты, которые я хочу.
Да, это делает. «print item» во втором абзаце «DJ» – semiflex
'line' будет иметь новую строку в конце, поэтому не будет соответствовать. Вы можете удалить его с помощью [** 'line.rstrip()' **] (https://docs.python.org/2/library/stdtypes.html#str.rstrip) и использовать возвращаемое значение. –
Не понимаю. Я бы разместил это прямо под циклом for в третьем абзаце? – semiflex