for循环iterable不覆盖原点

2024-06-28 19:13:03 发布

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

我试图在正文中找到所有的句号,并在其中的一部分中创建一个空格。我只允许使用for循环或正则表达式。我不明白为什么下面的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 = ' .'

如果有人能帮忙,我们将不胜感激


Tags: and代码textinforhavewordsplit
2条回答

其他简单方法:

text = 'Hello. Bye.'

new_text = ''

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

print(new_text)

输出:

Hello . Bye .

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

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

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

或者拼写稍长的版本(修改text_split,而不是用新的list修改str):

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

相关问题 更多 >