python - for 循环可迭代不会覆盖原始内容

标签 python for-loop

我试图找到文本正文中的所有句号,并在其中创建一个空格。我只允许使用 for 循环,否则我会使用正则表达式。我不明白为什么下面的 for 循环没有用我的新作业替换原始的字母。我的代码如下:

text = 'I have a ruler and bought for 25 gpb.'

text_split = text.split()

for word in text_split:
    for letter in word:
        if letter == '.':
            letter = ' .'

如果有人可以提供帮助,我们将不胜感激

最佳答案

letter = ' .' 只是将名称 letter 重新绑定(bind)到不同的字符串。绑定(bind)到letter的原始对象没有改变(即使在理论上也不能改变;str是一个不可变类型)。类似的问题会阻止在每个循环上更改绑定(bind)到 wordtext_split 中的原始 str

对于这个具体案例,您只需要:

text_split = [word.replace('.', ' .') for word in text_split]

或稍长的拼写版本(就地修改text_split,而不是用修改后的str的新list替换它):

for i, word in enumerate(text_split):
    text_split[i] = word.replace('.', ' .')

关于python - for 循环可迭代不会覆盖原始内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080617/

相关文章:

python - 卷积自动编码器图像尺寸误差

python - 带有 lxml treebuilder 的 html5lib 无法正确解析 namespace

python - 我如何使用 pandas 数据框,这样我只得到真实的行,如果条件不正确,我什么也得不到

python - 计算python中点的导数

python - 读取一个单词并打印所有子字符串,在 Python 中按长度排序

javascript - jQuery 只显示数组的最后一个元素

python - 在pySpark中处理空数组(可选的二进制元素(UTF8)不是一个组)

c++ - 在 C++ 中打印重复的字母

Java 格式化以获取最后计数

Python:元素明智除法运算符错误