如何替换字符串中第n个子字符串/字符? [Python 3]

时间:2014-05-29 22:55:51

标签: python string python-3.x

我打算每五年更换一次" b"用" c" 这是我的输入字符串:

jStr = aabbbbbaa

现在这里是代码

import re
m = re.search('c', jStr)
jStr1 = jStr[:m.end()]
jStr2 = jStr[:m.end()]
jStr3 = jStr[:m.end()]
jStr4 = jStr[:m.end()]
jStr5 = jStr[m.end():]
jStr6 = jStr5.replace('c', 'b', 1)
jStr == (jStr1+jStr6)

我一直得到的输出是相同的

aabbbbbaa

我开始用?

2 个答案:

答案 0 :(得分:1)

这可能不是最简洁的方法,您可以找到b的所有索引,每5th个索引,然后分配c。由于str内的索引不可分配,因此您必须转换为列表。

jStr = 'aabbbbbaa'
jStr = list(jStr)

bPos = [x for x in range(len(jStr)) if jStr[x] == 'b']

for i,x in enumerate(bPos):
   if (i+1) % 5 == 0:
      jStr[x] = 'c'

jStr = ''.join(jStr)
print(jStr)

输出:

aabbbbcaa

答案 1 :(得分:0)

jStr = "aabbbbbaabbbbb"
count = 1
res= "" # strings are immutable so we have to create a new string.
for s in jStr:
    if count == 5 and s == "b": # if count is 5 we have our fifth "b", change to "c" and reset count
        res +=  "c"
        count = 1
    elif s == "b": # if it is a "b" but not the fifth just add b to res and increase count
        count += 1
        res += "b"
    else:           # else it is not a "b", just add to res
        res += s 
print(res)
aabbbbcaabbbbc

查找每隔五分之一b,使用计数计算b,当我们达到第五个时,我们重置计数器并继续下一个字符。