use*_*611 3 python string replace python-2.7
s="|0000011111111|"
print s.replace(s[9:12],' ')
Run Code Online (Sandbox Code Playgroud)
......输出是 |00000 11|
s="|0000012345678|"
print s.replace(s[9:12],' ')
Run Code Online (Sandbox Code Playgroud)
......输出是 |00000123 78|
我只想替换s[9:12]为三个空格,为什么第一个输出不正确?
str.replace()将替换您传入的所有字符串作为第一个参数.这里的第一个参数是从切片创建的,这并不重要,该str.replace()方法没有给出关于该字符串来自何处的任何信息.相反,该str.replace()方法从位置0开始并向前搜索,在输入字符串中找到子字符串的位置无关紧要.
所以你真的只是这样做:
string_to_replace = s[9:12]
s.replace(string_to_replace, ' ')
Run Code Online (Sandbox Code Playgroud)
甚至只是
s.replace('111', ' ')
Run Code Online (Sandbox Code Playgroud)
这些都具有完全相同的效果.
您的第二个示例仅起作用,因为s[9:12]字符串值是唯一的s; 在恰当的位置只需要替换一次.
因为s[9:12]是字符串'111',所以你要求Python s用空格替换该字符串的所有出现,并且有两个这样的序列要替换.
你明确切片输入字符串要好得多:
s = s[:9] + ' ' + s[12:]
Run Code Online (Sandbox Code Playgroud)
这需要所有文字之前,你要替换的部分,所有的文字后,并提出三个空格在这两个子之间.