code: def parse_array(array_string):
      
      # Sanity check
      if len(array_string) < 2 or array_string[0] != '[' or array_string[-1] != ']':
          raise ValueError('Invalid array string: "%s"' % array_string)
      # Drop opening brace
      array_string = array_string[1:]
      # Go over the string, lopping off each value at the beginning until nothing is left
      values = []
      while True:
          if array_string == ']':
              # End of array
              return values
          elif array_string[0] in ', ':
              # In between values
              array_string = array_string[1:]
          elif array_string[0] == "'":
              # Start of quoted value, find its end
              match = re.search(r"[^\\]'", array_string)
              if match is None:
                  raise ValueError('Missing closing quote: "%s"' % array_string)
              values.append(array_string[1 : match.start() + 1])
              array_string = array_string[match.end():]
          else:
              # Start of non-quoted value, find its end
              match = re.search(r",|\]", array_string)
              values.append(array_string[0 : match.start()])
              array_string = array_string[match.end() - 1:]
docs: Parse an array string as returned by clickhouse. For example:
          "['hello', 'world']" ==> ["hello", "world"]
          "[1,2,3]"            ==> [1, 2, 3]