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

1

мой код:

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 без функции, он печатает мне все слова без знаков препинания. Спасибо за помощь ;)

  • 1
    Хорошо, нам нужен канонический вопрос для людей, которые присваивают неправильную переменную в цикле. Клянусь, я недавно видел дюжину подобных вопросов.
  • 0
    Я не думаю, что это удалит вопросительный знак, но только заключительную запятую. Строки в Python неизменны, каждая операция над строкой будет возвращать новую строку.
Показать ещё 1 комментарий
Теги:
string
for-loop
loops

3 ответа

0
Лучший ответ

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

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

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

        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 here

0

вы перезаписываете 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,"))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню