我最近在做一些python,如果有人可以帮助,我想了这个练习:
删除s中每两次出现(即,第2次、第4次、第6次等)的术语。上面的代码不起作用,我试图打印出aabcdaxyaa112
def delete_occurence(s, term):
s = [s[i:i + 2] for i in range(0, len(s), 2)]
s_length = len(s)
for item in range(1, s_length):
if (s[item] == term) and (item % 2 == 0):
s.remove(s[item])
print(''.join(s))
delete_occurence("aabcdaaaxyaa11aa2", "aa")
2条答案
按热度按时间e0bqpujr1#
你的代码不能工作,因为很多事情:
remove
只删除字符串的第一个匹配项我的方法是根据术语拆分字符串,然后重新创建列表元素,在2次中只插入一次术语。并处理最后一个元素的角情况。
ffx8fchx2#
我觉得一种方法是简单地用正则表达式找到你有 * term* 的索引。然后把绳子的这些部分去掉。请注意,如果您在同一个字符串上强制执行效果(例如下面的代码),则需要保留一个偏移量,以了解 term 索引的更新值。