2014-03-27 55 views
0

我想用大写字母I替换字符串中的任何字符。我有以下代码:替换字符串不会改变值

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

但是,它不会替换字符串中的任何内容。我希望在我之后加上一个空格,以区分任何我的言辞和言辞。

谢谢,如果你能提供帮助!

确切的代码是:

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

'replace'不会改变字符串到位。您必须将替换的字符串分配给变量。 – roippi

+0

对不起。我的确切代码是: – user3449872

+0

为什么破折号? – wnnmaw

回答

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

你丢掉第一new当你将在它的第二次操作的结果。

要么

​​

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

或使用正则表达式。

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'