for循环在函数中不迭代字符串,但在没有函数python3的情况下迭代

2024-09-26 22:07:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

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循环而不使用函数时,它会打印出所有没有标点符号的单词。感谢您的帮助;)


Tags: 代码fordefdistributionwordpeterduchar
3条回答

每次在循环中都用原始字符串覆盖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,"))

您可以尝试以下操作:

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

我知道你真的不需要for循环。因为replace做了一个固定的替换,所以我使用re模块中的sub来使用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

参考-Read documentation on re.sub here

相关问题 更多 >

    热门问题