Как я могу остановить повторение строки в моем массиве?
У меня есть массив строк (биржевых символов), которые я удалил из твиттера. Я убираю символы биржевого тикера из фида одного человека, однако иногда фид будет иметь несколько твитов об одном и том же биржевом тикере и поэтому будет повторяться несколько раз в моем массиве. Как я могу остановить повторение биржевого индикатора в моем массиве?
Вот мой код
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)
Вы можете использовать пустой словарь.
В цикле вы можете выполнить проверку:
если словарь не содержит ключа текущего элемента, вставьте его в твиты и словарь.