Два для цикла в функции - PullRequest
0 голосов
/ 03 мая 2020

Я хочу посчитать указанные c слова в строке (предложении), используя функцию. сначала я хочу избавиться от всех специальных символов в строке, а затем посчитать число определенного c слова (в данном случае проверка слова).

Оба цикла for хорошо работают друг от друга, но я не могу заставить его работать в одной функции. после попытки в течение часа или около того, мой вопрос к вам: должно быть очень простое решение ... большое спасибо

def BestCount(st):
    #strip special caracters.
    st_new=''
    for x in st:
        if x.isalnum():
            st_new +=x 
        #use the stripped string to count de number of word: best.
        count = 0
        for word in st_new.lower().split():
            if word == 'test':
                count +=1
        return count

пробую мою функцию:

BestCount('this is a test test.')
Output: 0

большое спасибо еще раз !

1 Ответ

1 голос
/ 03 мая 2020

Когда вы используете x.isalnum(), пробелы игнорируются, поэтому функция .split() не работает (ie, строка не разделяется). Поэтому вместо этого разрешите также пробелы, а также выровняйте функции должным образом:

def BestCount(st):
    #strip special caracters.
    st_new=''
    for x in st:
        if x.isalnum() or x.isspace():
            st_new +=x 
    count = 0
    for word in st_new.lower().split():
      if word == 'test':
        count +=1
    return count
print(BestCount('this is a test test.'))

дает:

2

Вот пример кода: Брелок

...