Python 如何将字符注入字符串?

Python 如何将字符注入字符串?,python,string,Python,String,我有一个函数,我需要在字符串的每个奇数索引之前插入一个字符 def inject(s, i): sent = str(s) new = [] for w in sent: if w == ' ': new.append(w) elif (sent.index(w) % 2 == 1): new.append(str(i) + w) else: new.append(w)

我有一个函数,我需要在字符串的每个奇数索引之前插入一个字符

def inject(s, i):
sent = str(s)
    new = []
    for w in sent:
        if w == ' ':
          new.append(w)
        elif (sent.index(w) % 2 == 1):
          new.append(str(i) + w)
        else:
          new.append(w)
    return ''.join(new)
该功能用于:

inject(1339, 3)
output: '1333339'
为……工作

inject('This is a test', 'x')
output: 'Txhixs ixs a txexst'
但不适用于:

inject('Hello World', 'x')
output: 'Hxello World'
我知道这与它在“遗嘱”上被打破有关,但我不知道如何修复它


谢谢

我想你是有意这么做的:

def注入(s,i):
已发送=str(s)
新=[]
对于idx,枚举中的w(已发送):
如果w='':
新增。追加(w)
elif idx%2==1:
新增.追加(str(i)+w)
其他:
新增。追加(w)
返回“”。加入(新)
对于[1339]中的t,“这是一个测试”,“Hello World”]:
打印(t,注入(t,'x'))
使用
enumerate()
时,无需搜索即可获得每个字符的索引

sent.index(w)
调用无法实现您想要的功能,即使在字符串中没有重复字符的情况下,它可能会执行此操作。

sent.index(w)
始终返回第一个匹配的索引。实际上,我想我们不能期望它返回我们想要的,当它没有返回我们的期望值时,就称之为“极度不可靠”。
def inject(s, i):
sent = str(s)
    new = []
    for w in sent:
        if w == ' ':
          new.append(w)
        elif (sent.index(w) % 2 == 1):
          new.append(str(i) + w)
        else:
          new.append(w)
    return ''.join(new)