Как я могу остановить повторение строки в моем массиве?

У меня есть массив строк (биржевых символов), которые я удалил из твиттера. Я убираю символы биржевого тикера из фида одного человека, однако иногда фид будет иметь несколько твитов об одном и том же биржевом тикере и поэтому будет повторяться несколько раз в моем массиве. Как я могу остановить повторение биржевого индикатора в моем массиве?

Вот мой код

import csv
import urllib.request
from bs4 import BeautifulSoup

twiturl = "https://twitter.com/ACInvestorBlog"
twitpage = urllib.request.urlopen(twiturl)
soup = BeautifulSoup(twitpage,"html.parser")

tweets = [i.text for i in soup.select('a.twitter-cashtag.pretty-link.js-nav b')]
print(tweets)

вот что распечатывает

['AYTU', 'AYTU', 'AYTU', 'AYTU', 'INDU', 'JPM', 'BAC', 'INPX', 'MSFT', 'SPX', 'HMNY', 'YTEN', 'INPX', 'MACK', 'KDMN', 'AMBA', 'KDMN', 'KDMN', 'MACK']

3 ответа

Использование set comprehension вместо list comprehension что вы используете:

tweets = {i.text for i in soup.select('a.twitter-cashtag.pretty-link.js-nav b')}

Вы можете преобразовать свой set в list используя код ниже, если вам нужно

tweets = list(tweets)

Вы можете сделать простую проверку на каждой итерации цикла for:

tweets = []
for i in soup.select('a.twitter-cashtag.pretty-link.js-nav b'):
    if i.text not in tweets:
        tweets.append(i.text)
print(tweets)

Вы можете использовать пустой словарь.

В цикле вы можете выполнить проверку:

если словарь не содержит ключа текущего элемента, вставьте его в твиты и словарь.

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