替换字符串不会改变值

时间:2014-03-27 19:57:55

标签: python string replace

我试图用大写字母替换字符串中的任何i。我有以下代码:

str.replace('i ','I ')

但是,它不会替换字符串中的任何内容。我想在I之后加一个空格来区分任何我的单词和单词。

谢谢你能提供帮助!

确切的代码是:

new = old.replace('i ','I ')
new = old.replace('-i-','-I-')

2 个答案:

答案 0 :(得分:2)

new = old.replace('i ','I ')
new = old.replace('-i-','-I-')

当您通过它分配第二个操作的结果时,您将丢弃第一个new

要么

new = old.replace('i ','I ')
new = new.replace('-i-','-I-')

new = old.replace('i ','I ').replace('-i-','-I-')

或使用正则表达式。

答案 1 :(得分:1)

我认为你需要这样的东西。

>>> import re
>>> s = "i am what i am, indeed."
>>> re.sub(r'\bi\b', 'I', s)
'I am what I am, indeed.'

这只会将'i'替换为I,但其他单词中的'i'将保持不变。

对于comments的示例,您可能需要以下内容:

>>> s = 'i am sam\nsam I am\nThat Sam-i-am! indeed'
>>> re.sub(r'\b(-?)i(-?)\b', r'\1I\2', s)
'I am sam\nsam I am\nThat Sam-I-am! indeed'