2017-08-18 15 views
0

私が撮影しているのTwitterストリームにTwitterの短いURLをデコードする機能をコーディングしています:私はいくつかのリンクが含まれているつぶやきにそれを適用するときに機能のデコードtwitter短いURL:いくつかのURLがある場合はどうなりますか?

def decode_short_url(x): 
    urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[[email protected]&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', x) 
    for short_url in urls: 
     try: 
      res = urllib.request.urlopen(short_url) 
      actual_url = res.geturl() 
      return(actual_url) 
     except: 
      return(short_url) 

しかし:

tweets['urls'] = tweets['text'].apply(decode_short_url) 

私はドン」私の新しい変数tweets.urlsのすべてのURLを取得する、最初のものだけ。 それらのすべてを手に入れる方法はありますか?

ありがとうございます!

+0

あなた 'return'後にリストを返します。 forループを終了させないように 'yield'を試してみてください。 –

答えて

0

何かを返すと、それが機能の終了です。代わりに、各URLを返すので、リストに追加して、あなたの `try`と` except`内ループ

:)

+0

おっと、明らかに...金曜日...助けてくれてありがとう! – Samo

関連する問題