Given a string of characters, I want the function `findMiddle()`/`find_middle()` to return the middle number in the product of each digit in the string.
Example: 's7d8jd9' -> 7, 8, 9 -> 7\*8\*9=504, thus 0 should be returned as an integer.
Not all strings will contain digits. In this case and the case for any non-strings, return -1.
If the product has an even number of digits, return the middle two digits
Example: 1563 -> 56
NOTE: Remove leading zeros if product is even and the first digit of the two is a zero.
Example 2016 -> 1
from operator import mul
from functools import reduce

def find_middle(s):
    if not s or not isinstance(s,str): return -1
    
    lstDig = [int(c) for c in s if c.isnumeric()]
    if not lstDig: return -1
    
    prod = str( reduce(mul,lstDig) )
    i    = (len(prod) - 1) // 2
    return int(prod[i:-i or len(prod)])
from operator import mul
from functools import reduce

def find_middle(s):
    if not s or not isinstance(s,str): return -1
    
    lstDig = [int(c) for c in s if c.isnumeric()]
    if not lstDig: return -1
    
    prod = str( reduce(mul,lstDig) )
    i    = (len(prod) - 1) // 2
    return int(prod[i:-i or len(prod)])