#python #loops #count
#питон #петли #подсчитывать #python #циклы #количество
Вопрос:
Я пытаюсь подсчитать, сколько раз пользователь вводил URL http: // в начале своего ответа или перед пробелом или в конце твита Проблема в том, что независимо от того, что я ввожу в твит, он всегда остается равным 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. В чем, по-видимому, проблема?
2. он всегда остается равным 0 независимо от того, что я ввожу, даже если это спам http://
3. Отредактируйте свой вопрос. Пожалуйста, предоставьте примеры входных данных, которые вы предоставляете, и объясните в своем вопросе, что именно не работает. Теперь вы просите читателя угадать, в чем проблема. Что совсем не помогает.
4. У меня такое чувство,
tweet
что это одна струна.5. да, это просто count_url («http:// У меня есть ссылка http:// под названием http://»)
Ответ №1:
Вы вводите твиты в свою функцию, которые являются строками. Итак, если у вас есть твит, подобный:
"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 = 1
вместо count = 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"
Существуют и другие ограничения, о которых вы должны знать. Итак, вам также необходимо знать, какие именно критерии вы хотите использовать для выполнения сопоставления.