Thanks to everyone who responded. Perhaps i should not
have said the most Python correct. It looks as if it may well be the
approach using the least amount of work the interpreter must complete.
At that point of speculation I am well out of my league.
I will be using the split method, and I thank everyone who replied.
Robert Berman
Tim Golden wrote:
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 - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
|
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor