0

tweepyを使用してツイートをクロールしていて、データウェアハウスのデータをフォーマットしたいとします。dictでキー/値を追加するときに望ましくない "int to tuple"変換

以下の方法をツイートが受信されるたびに呼び出される。

def on_status(self, status): 
    statusAsDict= { 
     "text": status.text, 
     "created_at": status.created_at, 
     "language": status.lang, 
     "user": { 
      "id": status.author.id, 
      "name": status.author.name, 
      "screen_name": status.author.screen_name, 
      "verified": status.author.verified, 
      "favourites_count": status.author.favourites_count, 
      "followers_count": status.author.followers_count, 
      "friends_count": status.author.friends_count 
     } 
    } 

    if status.in_reply_to_status_id != None: 
     statusAsDict["in_reply_to_status_id"] = status.in_reply_to_status_id, 

    if status.in_reply_to_screen_name != None: 
     statusAsDict["in_reply_to_screen_name"] = status.in_reply_to_screen_name, 

    if status.coordinates != None: 
     statusAsDict["coordinates"] = status.coordinates, 

    if hasattr(status, "retweeted_status"): 
     statusAsDict["retweet"] = {} 
     statusAsDict["retweet"]["id"] = status.retweeted_status.id, 
     statusAsDict["retweet"]["user_id"] = status.retweeted_status.author.id, 
     statusAsDict["retweet"]["user_screen_name"] = status.retweeted_status.author.screen_name, 
     statusAsDict["retweet"]["user_verified"] = status.retweeted_status.author.verified, 
     statusAsDict["retweet"]["user_favourites_count"] = status.retweeted_status.author.favourites_count, 
     statusAsDict["retweet"]["user_followers_count"] = status.retweeted_status.author.followers_count, 
     statusAsDict["retweet"]["user_friends_count"] = status.retweeted_status.author.friends_count, 
     statusAsDict["retweet"]["retweet_count"] = status.retweeted_status.retweet_count, 
     statusAsDict["retweet"]["text"] = status.retweeted_status.text, 

    if status.in_reply_to_status_id != None: 
     print type(status.in_reply_to_status_id) 
     print type(statusAsDict["in_reply_to_status_id"]) 
     print statusAsDict 

それは次のステートメントを印刷:

<type 'int'> 
<type 'tuple'> 
{'language': u'en', 'text': u'@fuckitslrhafi7 @fuckitslrhafi rt this from ff and main acc for 50 https://....', 'created_at': datetime.datetime(2016, 3, 30, 12, 25, 10), 'in_reply_to_status_id': (715149454257442816,), 'in_reply_to_screen_name': (u'fuckitslrhafi7',), 'user': {'favourites_count': 55, 'screen_name': u'JOlNTZOUlS', 'friends_count': 29, 'followers_count': 16, 'verified': False, 'id': 3040734513, 'name': u'accs in bio'}} 

それは

'in_reply_to_status_id': 715149454257442816 

ない

なければなりません
'in_reply_to_status_id': (715149454257442816,) 

intからtupleへの変換を回避するにはどうすればよいですか?

答えて

0

あなたは余分な末尾のカンマがあります

statusAsDict["in_reply_to_status_id"] = status.in_reply_to_status_id, 

は、末尾のカンマを削除し、それが動作するはずですが。例えば、1,はタプル(1,)ですが、1はちょうどintです。

statusdictに変換すると、vars関数を使用してみてください。

statusAsDict = vars(status) 
1

割り当てた行の末尾にあるコンマを取り除きます。

statusAsDict["in_reply_to_status_id"] = status.in_reply_to_status_id

カンマので(1)はまだ整数であり、そして1,タプルで、タプルではなく、括弧を定義するものです。

0

この行:

statusAsDict["in_reply_to_screen_name"] = status.in_reply_to_screen_name,

tupleint変換さtraillingのカンマ(、)を有します。

0
私は声明の中でカンマを削除する、と言うだろう

statusAsDict['in_reply_to_status_id'] = status.in_reply_to_status_id, 
関連する問題