code: def split_with_padding(x, separator=None, maxsplit=None):
      split_lists = np.char.split(
          x.astype(np.str_), separator, maxsplit
      )
      # Find the maximum length after splitting
      num_splits = np.vectorize(len, otypes=[np.int64])(split_lists)
      padding_requirement = (
          np.max(num_splits, initial=0) - num_splits
      ).tolist()
      # Add padding to lists that are shorter than the maximum length
      split_lists_padded = np.array(
          pad_empty_string(split_lists, padding_requirement),
          dtype=object,
      )
      if x.size == 0:
          split_lists_padded = split_lists_padded.reshape(*x.shape, 0)
      return split_lists_padded, num_splits
  
file_path: onnx/onnx/reference/ops/op_string_split.py
imports: from typing import Union
  import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 2 for calling a global function with example usage: split_with_padding(x, separator, maxsplit) and returns: split_lists_padded,  num_splits