<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def weld_str_slice(array, start=None, stop=None, step=None):
 """Slice each element. Parameters array : numpy.ndarray or WeldObject Input data. start : int, optional stop : int, optional step : int, optional Returns ------- WeldObject Representation of this computation. """

    obj_id, weld_obj = create_weld_object(array)
    start = _prepare_slice(start, '0L')
    stop = _prepare_slice(stop, 'lenString')
    step = _prepare_slice(step, '1L')

    weld_template = """map(
    {array},
    |e: vec[i8]|
        let lenString = len(e);
        let stop = if({stop} > lenString, lenString, {stop});
        result(
            for(iter(e, {start}, stop, {step}),
                appender[i8],
                |c: appender[i8], j: i64, f: i8| 
                    merge(c, f)
            )
        ) 
)"""

    weld_obj.weld_code = weld_template.format(array=obj_id,
                                              start=start,
                                              stop=stop,
                                              step=step)

    return weld_obj