Velocity Reviews > "10, 20, 30" to [10, 20, 30]

# "10, 20, 30" to [10, 20, 30]

Daniel Austria
Guest
Posts: n/a

 11-23-2006
Sorry,

how can i convert a string like "10, 20, 30" to a list [10, 20, 30]

what i can do is:

s = "10, 20, 30"
tmp = '[' + s + ']'
l = eval(tmp)

but in my opinion this is not a nice solution

daniel

Tech
Guest
Posts: n/a

 11-23-2006
Daniel Austria a écrit :
> Sorry,
>
> how can i convert a string like "10, 20, 30" to a list [10, 20, 30]
>
> what i can do is:
>
> s = "10, 20, 30"
> tmp = '[' + s + ']'
> l = eval(tmp)
>
> but in my opinion this is not a nice solution
>
>
> daniel
>

If you're sure that there's only ints
l = [int(item) for item in s.split(', ')]

Yannick

John Machin
Guest
Posts: n/a

 11-23-2006

Daniel Austria wrote:
> Sorry,
>
> how can i convert a string like "10, 20, 30" to a list [10, 20, 30]
>
> what i can do is:
>
> s = "10, 20, 30"
> tmp = '[' + s + ']'
> l = eval(tmp)
>
> but in my opinion this is not a nice solution

Most people share your opinion. Try this:

| >>> strg = "10, 20, 30"
| >>> [int(x) for x in strg.split(',')]
| [10, 20, 30]

Cheers,
John

Steven D'Aprano
Guest
Posts: n/a

 11-23-2006
On Thu, 23 Nov 2006 03:13:10 -0800, Daniel Austria wrote:

> Sorry,
>
> how can i convert a string like "10, 20, 30" to a list [10, 20, 30]
>
> what i can do is:
>
> s = "10, 20, 30"
> tmp = '[' + s + ']'
> l = eval(tmp)
>
> but in my opinion this is not a nice solution

It is a dangerous solution if your data is coming from an untrusted source.

>>> s = "10, 20, 30"
>>> L = [x.strip() for x in s.split(',')]
>>> L

['10', '20', '30']
>>> L = [int(x) for x in L]
>>> L

[10, 20, 30]

Or, as a one liner: [int(x.strip()) for x in s.split(',')]

--
Steven.

Tim Williams
Guest
Posts: n/a

 11-23-2006
On 23/11/06, Steven D'Aprano <(E-Mail Removed)> wrote:
> On Thu, 23 Nov 2006 03:13:10 -0800, Daniel Austria wrote:
>
> > Sorry,
> >
> > how can i convert a string like "10, 20, 30" to a list [10, 20, 30]
> >
> > what i can do is:
> >
> > s = "10, 20, 30"
> > tmp = '[' + s + ']'
> > l = eval(tmp)
> >
> > but in my opinion this is not a nice solution

>
>
> It is a dangerous solution if your data is coming from an untrusted source.
>
> >>> s = "10, 20, 30"
> >>> L = [x.strip() for x in s.split(',')]
> >>> L

> ['10', '20', '30']
> >>> L = [int(x) for x in L]
> >>> L

> [10, 20, 30]
>
> Or, as a one liner: [int(x.strip()) for x in s.split(',')]

You don't need the strip()

>>> int(' 10 ')

10
>>>

Fredrik Lundh
Guest
Posts: n/a

 11-23-2006
Tim Williams wrote:

>> It is a dangerous solution if your data is coming from an untrusted source.
>>
>> >>> s = "10, 20, 30"
>> >>> L = [x.strip() for x in s.split(',')]
>> >>> L

>> ['10', '20', '30']
>> >>> L = [int(x) for x in L]
>> >>> L

>> [10, 20, 30]
>>
>> Or, as a one liner: [int(x.strip()) for x in s.split(',')]

>
> You don't need the strip()
>
>>>> int(' 10 ')

> 10
>>>>

and the use of a list comprehension is pretty silly to, given that you want
to apply the same *function* to all items, and don't really need to look
it up for every item:

map(int, s.split(','))

</F>

Tim Williams
Guest
Posts: n/a

 11-23-2006
On 23/11/06, Fredrik Lundh <(E-Mail Removed)> wrote:
> Tim Williams wrote:
> >>>>

>
> and the use of a list comprehension is pretty silly to, given that you want
> to apply the same *function* to all items, and don't really need to look
> it up for every item:
>
> map(int, s.split(','))

Haha, thanks Frederic, I wondered how long it would take for a reply
from you

"Silly" though ??

Tim

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are Off Forum Rules