2016-10-24 12 views
0

ユーザーがhttp://のURLを入力した回数をカウントしようとしていますか?返信の開始時やスペースやツイートの先に先行していますか? 問題はどのような私は、入力つぶやきで、それは常に0のままとしてもそのスパムのhttp場合://それはまだあなたは文字列であるあなたの関数でつぶやきを、入力している0入力中にループが発生し、その中に出現が見られる

def count_url(tweet): 
count = 0 
for word in tweet: 
    if word.startswith('http://') or word.endswith('http://'): 
     count = count + 1 
return count 
+1

どのような問題があるようですか? – idjaw

+0

スパムメールであっても、何を入力しても常に0のままです。http:// – naruto321

+0

あなたの質問を編集してください。あなたが提供しているサンプル入力を提供して、あなたの質問で何がうまくいかないかを説明してください。あなたは今、問題が何であるかを推測するように読者に求めています。それは役に立たない。 – idjaw

答えて

0

にとどまります。だから、あなたのようなつぶやきを持っている場合:

"I love potatoes, buy some here http://potatoesarethebest.com" 

そして、あなたは文字ない言葉を反復されている、ことを反復処理。何をする必要がデフォルトでスペースに分割されます、それにsplitメソッドを呼び出すことによりリスト、とに文字列をを分割されます。

あなたの関数に意味
>>> s = "I love potatoes, buy some here http://potatoesarethebest.com" 
>>> s.split() 
['I', 'love', 'potatoes,', 'buy', 'some', 'here', 'http://potatoesarethebest.com'] 

、あなたが必要とするすべてのtweetを反復処理するときは、単にsplit()を呼び出します。また、count = count + 1の代わりにcount += 1を単に使用することもできます。

この方法では、word.endswith('http://')も意味がありません。 endswithは、マッチで終わる文字列の部分を探します。だからあなたは "thisishttp://"のようなものを探しています。それはあまり意味がありません。

def count_url(tweet): 
    count = 0 
    for word in tweet.split(): 
     if word.startswith('http://'): 
      count += 1 
    return count 

デモ:

>>> res = count_url("I love potatoes, buy some here http://potatoesarethebest.com") 
>>> print(res) 
1 

この解決策の制限は、それはあなたのような文字列がある場合は動作しませんということです。

"this is awesome check here:http://www.stuff.com" 

をあなたが認識する必要があり、他の制限があります。の。したがって、マッチングを実行するためにどのような基準を使用するのかを認識する必要があります。

関連する問題