r"""
    Performs multiple replace functions foreach item in search_list and
    repl_list.

    Args:
        str_ (str): string to search
        search_list (list): list of search strings
        repl_list (list or str): one or multiple replace strings

    Returns:
        str: str_

    CommandLine:
        python -m utool.util_str --exec-multi_replace

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_str import *  # NOQA
        >>> str_ = 'foo. bar: baz; spam-eggs --- eggs+spam'
        >>> search_list = ['.', ':', '---']
        >>> repl_list = '@'
        >>> str_ = multi_replace(str_, search_list, repl_list)
        >>> result = ('str_ = %s' % (str(str_),))
        >>> print(result)
        str_ = foo@ bar@ baz; spam-eggs @ eggs+spam

def multi_replace(str_, search_list, repl_list):
    r"""
    Performs multiple replace functions foreach item in search_list and
    repl_list.

    Args:
        str_ (str): string to search
        search_list (list): list of search strings
        repl_list (list or str): one or multiple replace strings

    Returns:
        str: str_

    CommandLine:
        python -m utool.util_str --exec-multi_replace

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_str import *  # NOQA
        >>> str_ = 'foo. bar: baz; spam-eggs --- eggs+spam'
        >>> search_list = ['.', ':', '---']
        >>> repl_list = '@'
        >>> str_ = multi_replace(str_, search_list, repl_list)
        >>> result = ('str_ = %s' % (str(str_),))
        >>> print(result)
        str_ = foo@ bar@ baz; spam-eggs @ eggs+spam
    """
    if isinstance(repl_list, six.string_types):
        repl_list_ = [repl_list] * len(search_list)
    else:
        repl_list_ = repl_list
    newstr = str_
    assert len(search_list) == len(repl_list_), 'bad lens'
    for search, repl in zip(search_list, repl_list_):
        newstr = newstr.replace(search, repl)
    return newstr