【发布时间】:2020-05-20 19:19:25
【问题描述】:
我是新手,也是我的第一篇文章,所以请原谅任何违反协议或新手编码错误:)
使用 Python 3.7 代码。
赋值:在字符串中查找一个字符,并在找到的字符前添加一系列字符。该字符在字符串中出现多次。 方法:
将字符串加载到变量中:
如果在变量中找到字符,则将此变量和字符传递给返回字符索引的函数。
遍历索引以添加一系列字符
def find_indices_of(char, in_string):
index = -1
print(index)
while True:
index = in_string.find(char, index + 1)
if index == -1:
break
yield index
var1 = "abcabcabc"
for i in find_indices_of('b', var1):
var1 = var1[:i] + 'XY' + var1[i:]
问题:对于第一次发生函数调用时的循环的第一次迭代,函数被赋予变量(var1)作为常量,并返回一组常量索引。但是迭代中的逻辑是向变量添加一系列字符。每次调用函数时,这个更新的变量都不会传递给函数。结果,字符的索引没有更新,因此循环的进一步迭代正在使用旧的索引值。这会导致在不需要的索引处添加一系列字符。
期望的输出: aXYZbcaXYZbcaXYZbc
实际输出:
aXYZbXYZcXYZabcabc
我正在努力将更新后的变量作为参数提交给函数:find_indices_of 以获得正确的索引。我还需要该函数在返回更新的索引之前省略先前出现的字符。有没有办法做到这一点?
【问题讨论】:
-
是的,有办法。
-
@AryaMcCarthy:你可以和我分享一下吗?
标签: string python-3.7