如何在遍历字符串时忽略该字符串中的特定索引-py3



我一直在开发一个从括号中提取文本的程序。。我想做的是在迭代时忽略字符串中的特定索引。。。

string="[x+[y]w+3333]"
lst1=[n1 for n1 in range(len(string)) if string.find("[", n1) == n1]
lst1.sort(reverse=True)#since the iteration begins with the "[" of highest index the list must be arranged in descending order
def find_brack2(brackplace):
lst2=[n2 for n2 in range(len(string[brackplace:])) 
if string[brackplace:].find("]", n2) == n2]
lst2.sort()
return (lst2[0]+brackplace)#returns the nearest "]"
lst=[]
for brack1 in lst1: 
mainstring=string[brack1+1:find_brack2(brack1)]
lst.append(mainstring)
print(lst)

输出:

['y', 'x+[y']
↑

正如你所看到的,这会导致一个问题。我想在遍历字符串时忽略string [brack1:find_brack2(brack1)+1]处的字符串。。。。。任何帮助都将不胜感激。。。

您可以使用Python中的re模块来忽略子字符串中的括号,这些括号是基于函数返回的索引获得的。

string="[x+[y]w+3333]"
lst1=[n1 for n1 in range(len(string)) if string.find("[", n1) == n1]
lst1.sort(reverse=True)#since the iteration begins with the "[" of highest index the list must be arranged in descending order
def find_brack2(brackplace):
lst2=[n2 for n2 in range(len(string[brackplace:])) 
if string[brackplace:].find("]", n2) == n2]
lst2.sort()
return (lst2[0]+brackplace)#returns the nearest "]"
lst=[]

for brack1 in lst1:
print(brack1)
print(find_brack2(brack1)) 
mainstring=''.join(re.findall(r'[0-9a-zA-Z+]', string[brack1+1:find_brack2(brack1)]))
lst.append(mainstring)
print(lst)

你得到的输出是:

['y', 'x+y']

最新更新