Tweepy,需要一个类似字节的对象,而不是 str。我该如何解决这个错误?
Tweepy, a bytes-like object is required, not str. How do i fix this error?
错误:回溯(最近调用最后一次):
文件“C:\Users\zakar\PycharmProjects\Tweepy-bots\main.py”,第 29 行,位于
c=c.replace("我是","")
类型错误:需要类似字节的对象,而不是 'str'
错误Error picture
代码如下所示:
`import tweepy
import tweepy as tt
import time
import sys
import importlib
importlib.reload(sys)
#login credentials twitter account
consumer_key = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
consumer_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_token = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
#login
auth = tt.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tt.API(auth)
search_query = "barca"
user = api.me()
print(user.name)
max_tweets = 100
for tweet in tweepy.Cursor(api.search, q=search_query).items(max_tweets):
c=tweet.text.encode('utf8')
c=c.replace("im ","")
answer="@"+tweet.user.screen_name+" Hi " + c + ", I'm a bot!"
print ("Reply:",answer)
api.update_status(status=answer,in_reply_to_status_id=tweet.id)
time.sleep(300) #every 5 minutes`
由于 c 是一个字节对象,它需要字节作为参数类型才能进行替换。
使用
c.replace(b"im ", b"")
b 引号前面表示 python 中的字节字符串。 b 在起始引号之外,中间没有 space。
问题是因为您正在对文本进行编码,然后进行替换。
这里
c=tweet.text.encode('utf8')
c=c.replace("im ","")
encode() 将 return 字节不是字符串。所以在替换中你也需要使用字节。喜欢
c=tweet.text.encode('utf8')
c=c.replace(b"im ",b"")
或者你先替换内容再编码。
错误:回溯(最近调用最后一次): 文件“C:\Users\zakar\PycharmProjects\Tweepy-bots\main.py”,第 29 行,位于 c=c.replace("我是","") 类型错误:需要类似字节的对象,而不是 'str'
错误Error picture
代码如下所示:
`import tweepy
import tweepy as tt
import time
import sys
import importlib
importlib.reload(sys)
#login credentials twitter account
consumer_key = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
consumer_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_token = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
access_secret = '-NOT GOING TO PUT THE ACTUAL KEY IN-'
#login
auth = tt.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tt.API(auth)
search_query = "barca"
user = api.me()
print(user.name)
max_tweets = 100
for tweet in tweepy.Cursor(api.search, q=search_query).items(max_tweets):
c=tweet.text.encode('utf8')
c=c.replace("im ","")
answer="@"+tweet.user.screen_name+" Hi " + c + ", I'm a bot!"
print ("Reply:",answer)
api.update_status(status=answer,in_reply_to_status_id=tweet.id)
time.sleep(300) #every 5 minutes`
由于 c 是一个字节对象,它需要字节作为参数类型才能进行替换。
使用
c.replace(b"im ", b"")
b 引号前面表示 python 中的字节字符串。 b 在起始引号之外,中间没有 space。
问题是因为您正在对文本进行编码,然后进行替换。
这里
c=tweet.text.encode('utf8')
c=c.replace("im ","")
encode() 将 return 字节不是字符串。所以在替换中你也需要使用字节。喜欢
c=tweet.text.encode('utf8')
c=c.replace(b"im ",b"")
或者你先替换内容再编码。