Robert Berman wrote:
Given a string consisting of numbers separated by spaces such as '1234 5678 1 233 476'. I can see I have two obvious choices to extract or parse out the numbers. The first relying on iteration so that as I search for a blank, I build a substring of all characters found before the space and then, once the space is found, I can then use the int(n) function to determine the number. From my C++ background, that is the approach that seems not only most natural but also most efficient......but....the rules of Python are different and I easily see that I can also search for the first blank, then using the character count, I can use the slice operation to get the characters. Of even further interest I see a string built-in function called split which, I think, will return all the distinct character sub strings for me.

My question is what is the most correct python oriented solution for extracting those substrings?

Correct? I don't know. Working; try this:

<code>
s = '1234 5678 1 233 476'
nums = [int (i) for i in s.split ()]
print nums

</code>

If you had some more sophisticated need (he says,
inventing requirements as he goes along) such as
pulling the numbers out of a string of mixed
numbers and letters, you could use a regular
expression:

<code>
import re

s = '1234 abc 5678 *** 1 233 xyz 476'
nums = [int (i) for i in re.findall ("\d+", s)]
print nums

</code>

TJG
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to