lst = 'AB[CD]EF[GH]'


输出:['A','B','CD','E','F','GH']

这是我尝试过的方法,但是没有用...

while(index < len(my_string)):
 curr_char = my_string[index]
 if(curr_char == '['):
      while(curr_char != ']'):
           multi = my_string[index + 1]
           index += 1
lst += multi


有人可以帮忙吗?无需导入正则表达式或其他任何东西。我想不使用它就这样做。

最佳答案

原始代码的问题似乎是:

1)lst,index和multi未初始化

2)循环是无限的,因为循环变量(索引)不会在每次迭代中递增。

3)检测到右括号时应跳过该括号以避免将其包含在最终列表中

此代码是如何解决这些问题的示例:

def getList(s):
    outList=[]
    lIndex=0
    while lIndex < len(s):
        if s[lIndex] == "[":
            letters=""
            lIndex+=1
            while s[lIndex] != "]":
                letters+=s[lIndex]
                lIndex+=1
            outList.append(letters)
        else:
            outList.append(s[lIndex])
        lIndex+=1
    return outList

print(getList('AB[CD]EF[GH]'))

07-24 18:57