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