Я попытался просмотреть каждую строку файла tsv и проверить, существует ли каждое слово в словаре. Функция может извлечь слово из каждого содержимого в каждой строке, но она терпит неудачу, когда ищет, существует ли слово в словаре.
dic = {'films': '0', 'adapted': '1', 'from': '2', 'comic': '3', 'books': '4'}
Формат CSV-файла = [1\tcontent]
def extract_feature(filename):
with open(filename) as tsv:
reader = csv.reader(tsv, delimiter = "\t")
for row in reader:
for word in row[1].split():
if word in dict:
print(word)
Чтобы уточнить комментарий Джерила: вы называете свой словарь «dic»: dic = { ... }. Однако дальше в коде вы называете это «dict»: if word in dict:. Вы не получите ошибку при использовании неопределенной переменной, потому что dict фактически определен: это предопределенный тип словаря. Но теперь вы пытаетесь перебрать сам тип dict, а не ваш словарь dic, что приводит к ошибке.






if word in dict:
dict — тип словаря, аналогичный list, int, float и т. д.
Не используйте dict в качестве имени переменной.
Почему вы отвечаете на вопросы с опечатками, просто закройте его.
@ U9-Forward Как это поможет спрашивающему?
@JohnGordon - Stack Overflow - это не репетиторская служба один на один, это база данных вопросов и ответов. Вопросы предназначены для того, чтобы быть полезными не только одному человеку. Кроме того, OP даже не использовал dict в качестве имени переменной; это была опечатка при попытке сослаться на dic, так что этот ответ в любом случае едва ли поможет спрашивающему.
Проблема в том, что опечатка, скорее всего, в его фактическом коде, а не только в опубликованном вопросе. TypeError — это именно та ошибка, которую вы получите при кодировании «if word in dict:». Кажется совершенно очевидным, что OP сделал использует dict в качестве имени переменной. Обратите внимание, что комментарий, о котором идет речь, не из OP. @ Ответ Джона Гордона прямо и ясно указывает на ошибку в коде ОП.
это
dicнеdict