Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def split_brackets(text, brackets_open_character='(', brackets_close_character=')', depth=0):
- items = []
- word = ''
- counter = 0
- start = -1
- for index, character in enumerate(text):
- if character == brackets_open_character:
- if counter == 0:
- if word:
- items.append(word)
- word = ''
- start = index + 1
- counter += 1
- elif character == brackets_close_character:
- counter -= 1
- if counter == 0:
- items.append(split_brackets(text[start:index], brackets_open_character=brackets_open_character, brackets_close_character=brackets_close_character, depth=depth + 1))
- else:
- if counter == 0:
- word += character
- if word:
- items.append(word)
- return items
- def join_brackets(items, brackets_open_character='(', brackets_close_character=')', depth=0):
- parts = []
- for item in items:
- if isinstance(item, list):
- item = join_brackets(item, brackets_open_character=brackets_open_character, brackets_close_character=brackets_close_character, depth=depth + 1)
- item = '{brackets_open_character}{item}{brackets_close_character}'.format(item=item, brackets_close_character=brackets_close_character, brackets_open_character=brackets_open_character)
- parts.append(item)
- return ''.join(parts)
- def main():
- text = '(1) and (b and (asd )) and (c)'
- splitted = split_brackets(text)
- assert (join_brackets(splitted) == text)
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment