# [Tutor] Re: List element with replace

Jeff Shannon jeff@ccvcorp.com
Thu Apr 24 16:37:02 2003

```Christopher Smith wrote:

>[...]  If all you want to do is
>get rid of the 'x/n' and the '|' characters then converting the list
>to a string, doing the replacements, and converting it back to a list
>might be an option:
>
>###
>
>
>>>>l
>>>>
>>>>
>['x/n 74| 51| 79| 41 60|', 1]
>
>
>>>>str(_) # convert to a string; the '_' refers to the last output
>>>>
>>>>
>"['x/n 74| 51| 79| 41 60|', 1]"
>
>
>>>>_.replace('x/n','') #do replacements
>>>>
>>>>
>"[' 74| 51| 79| 41 60|', 1]"
>
>
>>>>_.replace('|','')
>>>>
>>>>
>"[' 74 51 79 41 60', 1]"
>
>
>>>>eval(_, {}) # convert back to list, not giving eval() access to
>>>>
>>>>
>anything
>[' 74 51 79 41 60', 1]
>###
>

Since it looks like this was only converted to a list as a side-effect
of  removing the 'x/n', we can avoid a lot of ugly back-and-forth
conversions.

>>> mexT[0]
'x/n  74|  51  79|  41  60|'
>>> temp = mexT[0]
>>> temp = temp.replace('x/n', '')
>>> temp
'  74|  51  79|  41  60|'
>>> temp = temp.replace('|','')
>>> temp
'  74  51  79  41  60'
>>> temp = temp.strip()
>>> temp
'74  51  79  41  60'
>>> mexT[0] = temp
>>> mexT[0]
'74  51  79  41  60'
>>>

If the end result really should leave mexT[0] as a list, then a simple
split() will do the trick.  This lets us avoid the use of eval(), which
is generally a bad idea to use unless there's no other way to accomplish