Python 替换函数输出不同的结果

标签 python string python-2.7 replace

s="|0000011111111|"
print s.replace(s[9:12],'   ')

...输出为 |00000 11|

s="|0000012345678|"
print s.replace(s[9:12],'   ')

...输出为 |00000123 78|

我只想把s[9:12]替换成三个空格,为什么第一个输出不正确?

最佳答案

str.replace() 将替换您作为第一个参数传入的字符串的所有 处。这里的第一个参数是从切片创建的并不重要,str.replace() 方法没有给出关于该字符串来自何处的任何信息。相反,str.replace() 方法从位置 0 开始向前搜索,在输入字符串中找到子字符串的位置并不重要。

所以你真的只是这样做:

string_to_replace = s[9:12]
s.replace(string_to_replace, '   ')

甚至只是

s.replace('111', '   ')

这些都具有完全相同的效果。

您的第二个示例之所以有效,是因为 s[9:12] 字符串值在 s 中是唯一的;只有一处要替换,位置完全正确。

因为 s[9:12] 是字符串 '111',您要求 Python 替换 s 中该字符串的所有出现有空格,并且有两个这样的序列要替换。

显式地对输入字符串进行切片会好得多:

s = s[:9] + '   ' + s[12:]

这需要您要替换的部分之前的所有文本和之后的所有文本,并在这两个子字符串之间放置三个空格。

关于Python 替换函数输出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48271169/

相关文章:

python - 写入 COIN-OR CBC 日志文件

python - 为用户输入递归调用函数

python - Rhino python 代码生成

python - 删除 DataFrame 中字符串中的第二个字符

c++ - 将字符串隐式转换为 string_view

gcc 认为 Python3.3 header 优先于 Python2.7 header

python - 使用 python api 运行 salt 命令

python - 将 str 放入数据框中

.net - 从字符串末尾删除 <br> 标签的最佳方法是什么?

python - 什么更快 : temporary SQL tables or Python dicts for session data?