code: def split_and_keep(
      s: str, separators: t.Union[str, t.Iterable[str]]
  ) -> t.List[str]:
      """
      Split string by another substring into a list. Like str.split(), but keeps the separator occurrences in the list.
  
      Parameters
      ----------
      s : str
          the string to split
      separators : t.Union[str, t.Iterable[str]]
          the substring to split by
      Returns
      -------
      t.List[str]
          list of substrings, including the separator occurrences in string
  
      """
      if isinstance(separators, str):
          separators = [separators]
  
      split_s = []
      while len(s) != 0:
          i, substr = str_min_find(s=s, substr_list=separators)
          if i == 0:
              split_s.append(substr)
              s = s[len(substr) :]
          elif i == -1:
              split_s.append(s)
              break
          else:
              pre, _ = s.split(substr, 1)
              split_s.append(pre)
              s = s[len(pre) :]
      return split_s
  
imports: import io
  import itertools
  import json
  import os
  import random
  import re
  import sys
  import typing
  from collections import defaultdict
  from copy import copy
  from datetime import datetime
  from decimal import Decimal
  from string import ascii_uppercase, digits
  import numpy
  import pandas
  from ipywidgets import Widget
  from ipywidgets.embed import dependency_state, embed_data, escape_script, snippet_template, widget_view_template
  from packaging.version import Version
  from pandas.core.dtypes.common import is_numeric_dtype
  import deepchecks
  from deepchecks import core
  from deepchecks.core.resources import jupyterlab_plotly_script, requirejs_script, suite_template, widgets_script
  from deepchecks.utils.typing import Hashable
label_desc: Use image node_id 14 for calling a global function with example usage: split_and_keep(s, separators) and returns: split_s