我正在尝试确定字符是否未包含在字符串 s 中特定索引处的一组括号中。假设:
s = '(A.(B|A)).A'
然后是字符 '.' 的索引是 2 和 9。但是,只有 '.'索引 9(即 s[9])未包含在括号中。我怎样才能做到这一点?
编辑:我也想知道字符未包含在括号中的索引。
最佳答案
注意:这仅在括号平衡时有效。
如果你正在寻找特定字符的索引,它没有被括号括起来,那么你可以这样做
def checker(data, char_checked):
opened, result = 0, []
for idx, char in enumerate(data):
if char == char_checked and opened == 0 and char != "(":
result.append(idx)
if char == "(":
opened += 1
elif char == ")":
opened -= 1
return result
assert checker('(A.(B|A)).A', '.') == [9]
assert checker('(A.(B|A)).A', 'A') == [10]
assert checker('(A.(B|A)).A', 'C') == []
如果你要查找所有没有括在括号中的字符,那么你可以像这样稍微改变一下
def checker(data):
opened, result = 0, []
for idx, char in enumerate(data):
if opened == 0 and char != "(":
result.append([idx, char])
if char == "(":
opened += 1
elif char == ")":
opened -= 1
return result
assert checker('(A.(B|A)).A') == [[9, '.'], [10, 'A']]
assert checker('(A.(B|A))') == []
关于python - 确定一个字符是否不在索引处的一组括号中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22508932/