python 字符串替换问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 字符串替换问题相关的知识,希望对你有一定的参考价值。

'stsf',这个字符串我想把第二个s改成别的字母,但是使用replace的话会把前面的s也改掉,求教,如何修改?

old = 'stsf'
pos = old.find('s')
if (pos != -1):
new = old[:pos+1] + old[pos+1:].replace('s', 'A', 1)
print new
else:
print "Substring 's' not found!"

用字符串切片。


下面是更通用些的代码(封装成函数)。

def replaceN(string, old, new, n):
''' Return a copy of the string with the 'n' occurrence of substring 'old' replaced by 'new'.
If substring 'old' is not found, original string is returned.
'''
if (n == 1): return string.replace(old, new, 1)
pos = -1; search = 0
while (search < n-1):
search += 1
pos = string.find(old, pos+1)
if (pos == -1): return string
return string[:pos+1] + string[pos+1:].replace(old, new, 1)

print replaceN('stsftst', 's', 'A', 2)

参考技术A

replace的第三个参数是指定替换几个

>>> "stsf".replace("s","A", 1)
'Atsf'

追问

对啊,我明白,所以我只想改第二个s啊

追答

哦 不好意思 没仔细看。

如果你的字符串和替换第几个不固定的话,简单的方法好像没有。

def replaceit(s, replacefrom, replaceto, n=0):
  new_s, count = '', 0
  for letter in s:
    if letter == replacefrom:
      count += 1
      if (count == n or n == 0):
        new_s += replaceto
        continue
    new_s += letter
  return new_s
print replaceit("stsf", "s", "A", 2)

以上是关于python 字符串替换问题的主要内容,如果未能解决你的问题,请参考以下文章

python 查找字符串并将其替换

替换 Python 中第一次出现的字符串

python 中字符串替换问题 指定字符串替换 比如 /test/a.txt 只替换 a 把a 变成b,c,d,e,f等等等怎么替换

Python 替换列表 list 及字符串中的元素

替换字符串中的特定单词(Python)

如果没有替换,Python字符串替换文件而不触及文件