nodes: 0, module; 1, function_definition; 2, function_name:_number_finder; 3, parameters; 4, block; 5, identifier:s; 6, identifier:regex; 7, identifier:numconv; 8, expression_statement; 9, comment:# Split.  If there are no splits, return now; 10, expression_statement; 11, if_statement; 12, comment:# Now convert the numbers to numbers, and leave strings as strings; 13, expression_statement; 14, for_statement; 15, comment:# If the list begins with a number, lead with an empty string.; 16, comment:# This is used to get around the "unorderable types" issue.; 17, if_statement; 18, comment:"""Helper to split numbers"""; 19, assignment; 20, comparison_operator:len(s) == 1; 21, block; 22, assignment; 23, identifier:i; 24, call; 25, block; 26, not_operator; 27, block; 28, else_clause; 29, identifier:s; 30, call; 31, call; 32, integer:1; 33, return_statement; 34, identifier:s; 35, call; 36, identifier:range; 37, argument_list; 38, try_statement; 39, call; 40, return_statement; 41, block; 42, attribute; 43, argument_list; 44, identifier:len; 45, argument_list; 46, call; 47, identifier:remove_empty; 48, argument_list; 49, call; 50, block; 51, except_clause; 52, identifier:isinstance; 53, argument_list; 54, binary_operator:[''] + s; 55, return_statement; 56, identifier:regex; 57, identifier:split; 58, identifier:s; 59, identifier:s; 60, identifier:tuple; 61, argument_list; 62, identifier:s; 63, identifier:len; 64, argument_list; 65, expression_statement; 66, identifier:ValueError; 67, block; 68, subscript; 69, attribute; 70, list; 71, identifier:s; 72, identifier:s; 73, identifier:s; 74, identifier:s; 75, assignment; 76, pass_statement; 77, identifier:s; 78, integer:0; 79, identifier:six; 80, identifier:string_types; 81, string; 82, subscript; 83, call; 84, identifier:s; 85, identifier:i; 86, identifier:numconv; 87, argument_list; 88, subscript; 89, identifier:s; 90, identifier:i
code: def _number_finder(s, regex, numconv):
      """Helper to split numbers"""
  
      # Split.  If there are no splits, return now
      s = regex.split(s)
      if len(s) == 1:
          return tuple(s)
  
      # Now convert the numbers to numbers, and leave strings as strings
      s = remove_empty(s)
      for i in range(len(s)):
          try:
              s[i] = numconv(s[i])
          except ValueError:
              pass
  
      # If the list begins with a number, lead with an empty string.
      # This is used to get around the "unorderable types" issue.
      if not isinstance(s[0], six.string_types):
          return [''] + s
      else:
          return s