Как напечатать слова, которых нет в списке

У меня есть 2 файла, первый — это список твитов. А второй — это список стандартных слов, который выглядит так:

acoustics
acquaint
acquaintable
tbc....

Я хочу перебрать список твитов и напечатать слова, которых нет в стандартном списке слов.

Вот что я пробовал:

dk = open('wordslist.txt','r')
dlist = []
for x in dk.readlines():
    dlist.append(x.replace('\n',''))

dlist
length = len(tokenized_tweets)
for i in range(length):
    print(tokenized_tweets[i])
for x in range(len(tokenized_tweets)):
    if x[0] not in dlist:
        print(tokenized_tweets[x])

и я получил эту ошибку: 'int' object is not subscriptable

Подсказка: вы использовали функцию range в первом цикле for, но не во втором. Почему?

Selcuk 23.01.2023 07:38

в первом цикле я хотел узнать диапазон его твитов, а затем использовать его для второго цикла

Zulfi A 24.01.2023 01:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Просто используйте это, вы упускаете возможность писать range

for x in range(len(tokenized_tweets)):
    if x[0] not in dlist:
        print(tokenized_tweets[x])

попробовал, но все равно выдает сообщение об ошибке "объект int не подлежит подписке"

Zulfi A 23.01.2023 19:38

попробуй использовать if x not in dlist:

Rajneesh Sharma 02.02.2023 18:38
Ответ принят как подходящий

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

В трассировке вы увидите стрелку, указывающую на строку for x in (len(tokenized_tweets)):. Сообщение об ошибке гласит: 'int' object is not iterable. Какова ваша итерируемость в этом цикле for? (len(tokenized_tweets)) Это действительно итерируемый объект? Нет, это int. Вывод len() всегда будет int (если вы не перезапишете его).

Вы должны передать длину tokenized_tweetes объекту range(). Это итерируемый.

дополнительный совет:

Поскольку вы находите слова для каждого твита, сделайте из своих слов set. Проверка членства в наборе выполняется намного быстрее, чем в списке. (О (1) > О (п))

Он также удаляет дубликаты, если они есть.

Решение:

with open("wordslist.txt") as f:
    words_list = {word.removesuffix("\n") for word in f}

with open("tweets.txt") as g:
    for tweete in g:
        for word in tweete.split():
            if word not in words_list:
                print(word)

Я попытался изменить его на это: «для x в диапазоне (len (tokenized_tweets)): если x [0] не в dlist: print (tokenized_tweets [x])», но это все еще дает мне ошибку: объект «int» не подписка" Можете ли вы подробнее рассказать о наборе?

Zulfi A 23.01.2023 19:42

@ZulfiA, если присмотреться, теперь это другое исключение. Это говорит о "подписке". Вы не можете сделать x[0], когда x является int. Так же, как сказать: 4[0]

S.B 23.01.2023 19:56

Я попытался преобразовать целое число в строку, выполнив: data = str(tokenized_tweets). но все равно не работает и выдает ту же ошибку

Zulfi A 23.01.2023 20:21

@ZulfiA Я обновил ответ решением. Это то, что вы ищете?

S.B 24.01.2023 08:26

да это то что я ищу! Спасибо большое за вашу помощь! Есть ли способ разделить вывод построчно, как в списке классов? и есть ли повторяющиеся слова, если я использую этот код?

Zulfi A 24.01.2023 09:47

@ZulfiA Пожалуйста, примите это и задайте другой вопрос, поскольку эти вопросы не связаны с вашей реальной проблемой.

S.B 24.01.2023 15:33

Другие вопросы по теме