【发布时间】:2014-10-01 03:51:39
【问题描述】:
我对编程比较陌生,想就遇到的问题寻求帮助。在删除某些位置后,我需要找出一种将字符串的索引映射回原始字符串的方法。例如,假设我有一个列表:
original_string = 'abcdefgh'
我删除了一些元素以获得:
new_string = acfh
我需要一种方法来获取new_string 的“真实”索引。换句话说,我想要我在original_string 中保留的位置的索引。从而返回:
original_indices_of_new_string = [0,2,5,7]
我的一般做法是这样的:
我在original_string 中找到了我删除的职位:
removed_positions = [1,3,4,6]
然后给定new_string的索引:
new_string_indices = [0,1,2,3]
那么我想我应该可以做这样的事情:
original_indices_of_new_string = []
for i in new_string_indices:
offset = 0
corrected_value = i + offset
if corrected_value in removed_positions:
#somehow offset to correct value
offset+=1
else:
original_indices_of_new_string.append(corrected_value)
这并没有真正起作用,因为偏移量在每次循环后重置为 0,我只想在 corrected_value 位于 removed_positions 中时发生这种情况(即,我想为 remove_positions 3 和 4 偏移 2 但是如果没有删除连续位置,则只有 1)。
我需要根据我删除的位置而不是我保留的位置来执行此操作,因为接下来我将删除更多位置,我希望有一个简单的函数将它们映射回每次都是原版。我也不能只搜索我删除的部分,因为真正的字符串不够独特,无法保证找到正确的部分。
任何帮助将不胜感激。我已经使用堆栈溢出有一段时间了,总是发现我在上一个线程中遇到的问题,但这次找不到问题,所以我决定自己发布一个问题!让我知道是否有任何需要澄清的地方。
*字符串中的字母不是唯一的
【问题讨论】:
-
你如何决定首先删除哪些元素?
-
字符串中的字母是否唯一?即,一个字母不会出现多次?
-
字符串中的字母不是唯一的。我实际上使用的字符串相当长并且有很多重复。这是我一直试图解决的问题,以及为什么使用类似 string.index() 的东西不起作用。
标签: python string mapping indices