关于.replace()函数

时间:2013-11-13 03:40:10

标签: python-2.7 str-replace

我是Python的新手,我正在尝试创建自己的小程序。我有替换功能的问题。我想用位置编号替换字符串中的每个偶数位置,当位置大于10时会出现问题;它只是在10后用偶数替换每个字符。这是我的代码

def replaceEvenUntil(st,n):
    for i in range(len(st)):
        if i % 2 == float(0):
            st = st.replace(st[i], str(i), n)
    return st

>>> replaceEvenUntil("abcdefghijklmnop", 100)
'0b2d4f6h8j101214161820'

我的代码在哪里犯了错误?

1 个答案:

答案 0 :(得分:1)

一些事情:

  1. floatstr是Python中的函数。您无需撰写int(0)str('foo')
  2. str.replace('a', 'b')a的所有次出现替换为b。你真的不想那样。
  3. 您在循环中重新分配st,但st的大小可能会发生变化(10是两个字符),因此您将逐个进行操作字符串长度超过10个字符时出错。
  4. 我会构造一个临时字符串:

    def replaceEvenUntil(s, n):
        result = ''
    
        for i in range(min(n, len(s))):
            if i % 2 == 0:
                result += str(i)
            else:
                result += s[i]
    
        return result
    

    enumerate()

    def replaceEvenUntil(s, n):
        result = ''
    
        for i, c in enumerate(s):
            if i <= n and i % 2 == 0:
                result += str(i)
            else:
                result += s[i]
    
        return result