如何去除从Twitter爬取的股票代码数组中的重复项?
解决Twitter爬取股票代码数组的去重问题
嘿,看你已经搞定了从Twitter爬取股票代码的部分,不过数组里重复的代码确实有点烦人对吧?别担心,有好几种简单的方法能解决这个问题,我给你整理一下:
方法1:利用Python集合快速去重
Python里的集合(Set)天生就不允许重复元素,所以直接把列表转成集合再转回列表就能快速去重。不过要注意:集合是无序的,如果不需要保留原数组的首次出现顺序,这个方法最省事。
修改后的代码如下:
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')] # 一步完成去重 unique_tweets = list(set(tweets)) print(unique_tweets)
方法2:保留原顺序的去重(Python 3.7+适用)
如果你想保留股票代码在原数组中首次出现的顺序,Python 3.7及以上版本里的字典键是有序的,用dict.fromkeys()就能轻松实现:
代码示例:
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')] # 去重同时保留首次出现顺序 unique_tweets = list(dict.fromkeys(tweets)) print(unique_tweets)
运行后你会得到和原数组顺序一致,但没有重复值的列表,非常适合需要保留推文提及顺序的场景。
方法3:手动遍历实现(兼容所有Python版本)
如果你的Python版本比较旧,或者想自己理解去重的逻辑,可以手动遍历原数组,只把没出现过的元素加入新列表:
代码示例:
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')] # 手动遍历去重 unique_tweets = [] for code in tweets: if code not in unique_tweets: unique_tweets.append(code) print(unique_tweets)
这个方法兼容性拉满,逻辑也很直观,适合新手理解去重的底层原理。
内容的提问来源于stack exchange,提问作者Taylor Rhodes
相关产品推荐
相关产品推荐

