我使用tweepy库获取推文文本列表,我需要将200条推文中的单词与停用词列表进行比较,并删除推文文本列表中的停用词,以便我可以说出单词是什么在搜索的推文中出现的最多。
问题是,当我检索tweet.texts时,我必须对其进行编码才能获得它,因此我得到了一个b'word'列表,这不能与我的常规字符串停止词列表进行比较。
def get_tweetwords():
print("Ingrese el hashtag a buscar, no olvide escribir el numeral (#)(Ctrl+3)")
hashtag=str(input())
while (hashtag[0])!="#":
print("No olvide escribir el numeral. Vuelva a escribir el hashtag:")
hashtag=str(input())
busqueda=tweepy.Cursor(api.search,q=hashtag).items(10)
twlist=[]
listadepalabras=[]
for tweets in busqueda:
twlist.append(tweets.text.encode('utf-8'))
for i in twlist:
x=i.split()
for j in x:
listadepalabras.append(j)
return(listadepalabras)
我需要将listadepalabras
列表解码为字符串列表,以便将其与stopwords
列表进行比较并删除其停用词。
def get_stopwords():
listastopwords=[item for item in open("stopwords.txt").readlines()]
for item in listastopwords:
if "\n" in listastopwords:
listastopwords[listastopwords.index(item)]=item.replace("\n","")
return(listastopwords)
def sacar_stopwords():
listadepalabras=get_tweetwords()
listastopwords=get_stopwords()
for i in listadepalabras:
for j in listastopwords:
if i==j:
listadepalabras.remove(j)
return(listadepalabras)
这不起作用,因为我的文字列表包含b'word'
格式的字词,我的停用词列表只是'word'
def repeticiones_palabra():
listadepalabras=sacar_stopwords()
diccionario=collections.Counter(listadepalabras)
diccionario=dict(diccionario.most_common(10))
print ("-LAS 10 PALABRAS MAS UTILIZADAS SON-")
print(diccionario)
这应该让我获得我列表中最常用的10个单词并且它工作正常但是我得到的主要是停用词和我查找的主题标签,所以我可以告诉我的停用词不会从列表中删除。
repeticiones_palabra()
我希望自己清楚,我是python的初学者,也是堆栈溢出。提前谢谢。
答案 0 :(得分:0)
b'某些字符串'是BYTESTRING
要将其转换为常规字符串,必须使用字符串对象的.decode()内置函数:
lst = [b'abc', b'def']
# >>> [b'abc', b'def']
lst2 = [s.decode("utf-8") for s in lst]
# >>> ['abc', 'def']
编辑: 我看到你以前在线编码字符串
for tweets in busqueda:
twlist.append(tweets.text.encode('utf-8'))
为什么要编码然后想要解码?
只需将其更改为:
for tweets in busqueda:
twlist.append(tweets.text)