如何在不使用内置函数的情况下替换字符串列表中出现的第n个

2024-09-30 12:11:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python有点陌生,我在编写一个包含四个元素(ex str、Replacefrom、replaceto和n)的脚本时遇到问题,它查找字符并替换第n次出现的字符。在

示例:

>>> replaeceit("Mississippi", "s", "l", 2)
'Mislissippi'
>>> replaeceit("Mississippi", "s", "l", 0)
'Mississippi'

n是2,所以代码将第二个s改为l。。当n=0时,它什么也做不了

老实说,我不知道如何将n实现为等式这是我目前为止没有n的代码

^{pr2}$

Tags: 代码脚本元素示例字符老实exstr
3条回答

这是第二次尝试理解您的问题:

def replaceit(s, replacefrom, replaceto, n):
  new_s, count = '', 0
  for letter in s:
    if letter == replacefrom:
      count += 1
      if count == n:
        new_s += replaceto
        continue
    new_s += letter
  return new_s

这与您的示例相匹配:

^{pr2}$

如果这不是你想要的,请解释清楚。在

也可以使用正则表达式实现相同的效果:

def replaceit(s, replacefrom, replaceto, n):
  import re
  if n <= 0:
    return s
  return re.sub('(.*?%s)%s' % (('%s.*?' % replacefrom) * (n-1), replacefrom), r'\1%s' % replaceto, s)

每个人都喜欢生成器表达式。在

from itertools import count
def replaceit(str, replacefrom, replaceto, n):
    c = count(1)
    return ''.join(replacefrom if l == replaceto and c.next() == n else l for l in str)

好吧,也许现在我明白你在找什么了:

def replaceit(st, remove, put, pos):
outs = ""
count = 0
for letter in st:
    if letter == remove:
        count += 1
        if count == pos:
            outs += put
        else:
            outs += letter
    else:
        outs += letter
return outs

输出:

^{pr2}$

当然,您可以检查参数no2和no3是否是len()为1的字符串。在

相关问题 更多 >

    热门问题