цикл for не перебирает строку в функции, но обходится без функции - python 3 - PullRequest
0 голосов
/ 22 сентября 2018

мой код:

def word_distribution(stringeling):
    for char in "?!.,":
        Satz = stringeling.replace(char,"")
    return Satz

print(word_distribution("Hallo du Peter? Du! und punkt. und komma,"))

output: Hallo du Peter Du! und punkt. und komma

Код удаляет только первое "?"Почему, когда я использую цикл for без функции, он печатает все слова без знаков препинания.Спасибо за помощь;)

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

Вы можете попробовать следующее:

def word_distribution(stringeling):
    for char in "?!.,":
        stringeling = stringeling.replace(char,"")
    return stringeling.lower()
0 голосов
/ 22 сентября 2018

ИМХО вам не нужен цикл for.Поскольку replace делает фиксированную замену, следовательно, я использовал sub из re module для поиска и замены с помощью регулярных выражений.Ниже приведен код

        import re
        def word_distribution(stringeling):
            Satz = re.sub('[?,.!]',"",stringeling,count=0,flags=0)
            return Satz

Выводится следующим образом

>>> print(word_distribution("Hallo du Peter? Du! und punkt. und komma,"))
Hallo du Peter Du und punkt und komma

См. - Прочтите документацию по re.sub здесь

0 голосов
/ 22 сентября 2018

вы перезаписываете Satz каждый раз в цикле с помощью оригинальной строчки.Попробуйте:

def word_distribution(stringeling):
    for char in "?!.,":
        stringeling = stringeling.replace(char,"")
    return stringeling


print(word_distribution("Hallo du Peter? Du! und punkt. und komma,"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...