for循环可迭代,不覆盖原始

时间:2019-11-28 01:37:46

标签: python for-loop

我正在尝试在文本正文中找到所有句号,并在其中创建空白。我只允许用于循环或使用正则表达式。我不明白为什么下面的for循环不会用我的新任务替换原来的letter。我的代码如下:

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 = ' .'

如果有人可以帮助您,将不胜感激

2 个答案:

答案 0 :(得分:1)

letter = ' .'只是将名称letter重新绑定到另一个字符串。绑定到letter的原始对象是不变的(即使从理论上讲也无法更改; str是不可变的类型)。一个类似的问题会阻止在每个循环中更改绑定到str的{​​{1}}中的原始text_split

对于这种情况,您只需要:

word

或稍长的拼写版本(修改了text_split = [word.replace('.', ' .') for word in text_split] 而不是用修改后的text_split的新list代替):

str

答案 1 :(得分:-1)

另一种简单方法:

text = 'Hello. Bye.'

new_text = ''

for letter in text:
    if letter == '.':
        new_text += ' .'
    else:
        new_text += letter

print(new_text)

输出:

Hello . Bye .