Python Tweepy截断状态

Python Tweepy截断状态,python,tweepy,Python,Tweepy,我使用tweepy挖掘用户时间线数据,在理解以下内容时遇到了一些困难: “retweeted”和“truncated”属性所指的内容是否相同(即状态文本超过140个字符) 如果没有,有什么区别 我遇到了一个stackoverflow问题,有人问如何检索由于长度超过140个字符而被“切碎”的状态文本。它建议在_json字典中有一个retweeted属性,如果是这样,该属性将为true,并且完整的状态文本将位于status->retweeted_status->text下。但是,我没有找到它,唯一的

我使用tweepy挖掘用户时间线数据,在理解以下内容时遇到了一些困难:

  • “retweeted”和“truncated”属性所指的内容是否相同(即状态文本超过140个字符)
  • 如果没有,有什么区别
  • 我遇到了一个stackoverflow问题,有人问如何检索由于长度超过140个字符而被“切碎”的状态文本。它建议在_json字典中有一个retweeted属性,如果是这样,该属性将为true,并且完整的状态文本将位于status->retweeted_status->text下。但是,我没有找到它,唯一的状态文本是在status->text结尾为“…”下。我弄错了吗?如果是的话,我如何获得全文

  • 提前谢谢你的帮助

    是否“retweetd”和“truncated”属性指的是同一事物(即状态文本超过140个字符)?如果没有,区别是什么?

    不,推特不仅可以在转发之后被截断,而且在回复或提及之后也可以被截断(参见下面的示例,它不是转发)。如果是这种情况,“截断”将设置为“真”(“转发”将为真或假)。如果tweet没有被截断,因为它的大小远远小于140个字符,那么“retweetd”也可能等于True,“truncated”也可能等于False

    建议在_json字典中有一个retweetd属性,如果是这样,则该属性将为true,并且完整的状态文本将位于status->retweetd_status->text下。

    只有当推特是真正的转发时,这才是真的。实际上,如果转发的_状态来自另一条被截断的tweet,那么它本身可能被截断。最好的方法是使用Tweepy中的
    tweet\u mode='extended'
    参数来检索全文(遗憾的是Tweepy文档中没有记录)。例如:

    (未扩展)

    @tousuncotefoot@equipedefrance@CreditAgricole@AntoGriezmann@KMbappe@layvinkurzawa@Umatisam J'ai jamais vue d

    (扩展)

    @tousuncotefoot@equipedefrance@CreditAgricole@AntoGriezmann@KMbappe@layvinkurzawa@UmtitiSam J'ai jamais vue de match de foot and cela ferait un beau cadeau pour mon copain 关于问题3)

    下面是一种从Tweepy流侦听器访问扩展状态文本的方法,假设tweet超过140个字符(在这种情况下,status对象将具有扩展的_tweet字典)。如果tweet不超过140个字符,则只需像往常一样获取状态文本:

    class MyStreamListener(tweepy.StreamListener):
        def on_status(self, status):
            try:
                text = status.extended_tweet["full_text"]
            except AttributeError:
                text = status.text
    

    我也因为这个问题而烦恼

    当tweet被转发时,在.json文件中有两个“全文”标记。通过调用“retweet\u status”标签可以提取真正的全文。解决方案如下:

    for tweet in tweepy.Cursor(api.search, q = "social", tweet_mode='extended',
                               wait_on_rate_limit = True, wait_on_rate_limit_notify = True, include_entities=True).items(10):
        try:
            print tweet.retweet.im_self._json['retweeted_status']['full_text']
        except:
            print tweet.retweet.im_self._json['full_text']
    
    

    对我来说,最简单的方法就是获取状态并搜索转发的全文

    status = api.get_status(id, tweet_mode="extended")
    try:
        print(status.retweeted_status.full_text)
    except AttributeError:  # Not a Retweet
        print(status.full_text)
    
    这甚至在搜索中也有效

    tweets=[]
    for tweet in api.search(q=keyword, lang="en", count=count, tweet_mode='extended'):
        try:
           tweets.append(tweet.retweeted_status.full_text)
        except AttributeError:  # Not a Retweet
           tweets.append(tweet.full_text)
    

    谢谢你的回答。我已经试过了,正如你所解释的,这正是我所需要的。谢谢:)+1来自我。我很高兴它有用!:)
    status = api.get_status(id, tweet_mode="extended")
    try:
        print(status.retweeted_status.full_text)
    except AttributeError:  # Not a Retweet
        print(status.full_text)
    
    tweets=[]
    for tweet in api.search(q=keyword, lang="en", count=count, tweet_mode='extended'):
        try:
           tweets.append(tweet.retweeted_status.full_text)
        except AttributeError:  # Not a Retweet
           tweets.append(tweet.full_text)