Re: Best way to check if string is an integer?

2008-04-08 Thread Tobiah

 byte twiddling if the need arouse.

I'm excited already :)

** Posted from http://www.teranews.com **
-- 
http://mail.python.org/mailman/listinfo/python-list


RE: Best way to check if string is an integer?

2008-04-08 Thread Stephen Cattaneo
1E+1 is short hand for a floating point number, not an interger.
 float(1E+1)
10.0

You could convert the float to an integer if you wanted (i.e. ceiling,
floor, rounding, truncating, etc.).

Cheers,

Steve

-Original Message-
From: Martin Marcher [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, April 08, 2008 1:32 PM
To: python-list@python.org
Subject: Re: Best way to check if string is an integer?

hmmm

int() does miss some stuff:

 1E+1
10.0
 int(1E+1)
Traceback (most recent call last):
  File stdin, line 1, in module
ValueError: invalid literal for int() with base 10: '1E+1'

I wonder how you parse this?

I honestly thought until right now int() would understand that and
wanted to show that case as ease of use, I was wrong, so how do you
actually cast this type of input to an integer?

thanks
martin


-- 
http://tumblr.marcher.name
https://twitter.com/MartinMarcher
http://www.xing.com/profile/Martin_Marcher
http://www.linkedin.com/in/martinmarcher

You are not free to read this message,
by doing so, you have violated my licence
and are required to urinate publicly. Thank you.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-08 Thread Martin Marcher
hmmm

int() does miss some stuff:

 1E+1
10.0
 int(1E+1)
Traceback (most recent call last):
  File stdin, line 1, in module
ValueError: invalid literal for int() with base 10: '1E+1'

I wonder how you parse this?

I honestly thought until right now int() would understand that and
wanted to show that case as ease of use, I was wrong, so how do you
actually cast this type of input to an integer?

thanks
martin


-- 
http://tumblr.marcher.name
https://twitter.com/MartinMarcher
http://www.xing.com/profile/Martin_Marcher
http://www.linkedin.com/in/martinmarcher

You are not free to read this message,
by doing so, you have violated my licence
and are required to urinate publicly. Thank you.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-08 Thread Martin Marcher
arg, as posted earlier:

int(10.0) fails, it will of course work with float(1E+1) sorry for
the noise...

On Tue, Apr 8, 2008 at 10:32 PM, Martin Marcher [EMAIL PROTECTED] wrote:
 hmmm

  int() does miss some stuff:

   1E+1
  10.0
   int(1E+1)
  Traceback (most recent call last):
   File stdin, line 1, in module
  ValueError: invalid literal for int() with base 10: '1E+1'

  I wonder how you parse this?

  I honestly thought until right now int() would understand that and
  wanted to show that case as ease of use, I was wrong, so how do you
  actually cast this type of input to an integer?

  thanks
  martin


  --
  http://tumblr.marcher.name
  https://twitter.com/MartinMarcher
  http://www.xing.com/profile/Martin_Marcher
  http://www.linkedin.com/in/martinmarcher

  You are not free to read this message,
  by doing so, you have violated my licence
  and are required to urinate publicly. Thank you.




-- 
http://tumblr.marcher.name
https://twitter.com/MartinMarcher
http://www.xing.com/profile/Martin_Marcher
http://www.linkedin.com/in/martinmarcher

You are not free to read this message,
by doing so, you have violated my licence
and are required to urinate publicly. Thank you.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-08 Thread Steve Holden
Martin Marcher wrote:
 hmmm
 
 int() does miss some stuff:
 
 1E+1
 10.0
 int(1E+1)
 Traceback (most recent call last):
   File stdin, line 1, in module
 ValueError: invalid literal for int() with base 10: '1E+1'
 
 I wonder how you parse this?
 
 I honestly thought until right now int() would understand that and
 wanted to show that case as ease of use, I was wrong, so how do you
 actually cast this type of input to an integer?
 
 thanks
 martin
 
 
int(float(1E+1)) # untested

regards
  Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC  http://www.holdenweb.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-06 Thread Jorgen Grahn
On Sat, 5 Apr 2008 22:02:10 -0700 (PDT), Paddy [EMAIL PROTECTED] wrote:
 On Apr 6, 5:18 am, ernie [EMAIL PROTECTED] wrote:
 On Apr 6, 10:23 am, Roy Smith [EMAIL PROTECTED] wrote:

  int(s) and catching any exception thrown just sounds like the best way.

 Another corner case: Is 5.0 an integer or treated as one?

 In Python, 5.0 is a float 5.0 is a string, and you need to make your
 mind up about what type you want 5.0 to be represented as in your
 program and code accordingly.

int('5.0') raises an exception rather than rounding or truncating to
5. That is probably what most people want, and it seems the original
poster wanted that, too.

I always use int(n). If I ever find a situation where I want another
syntax for integers for some specialized use, I'll approach it as a
normal parsing problem and use regexes and so on -- wrapped in a
function.

The problem becomes clearer if you look at floats. There are many
different ways to write a float[0], and Python parses them better and
faster than you and me.

/Jorgen

[0] There would have been more if Python had supported hexadecimal
floating-point literals, like (I believe) C does.

-- 
  // Jorgen Grahn grahn@Ph'nglui mglw'nafh Cthulhu
\X/ snipabacken.se  R'lyeh wgah'nagl fhtagn!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-06 Thread bowman
Jorgen Grahn wrote:

 [0] There would have been more if Python had supported hexadecimal
 floating-point literals, like (I believe) C does.

C99 does. On the other hand, it isn't a feature I sorely missed during the
first 20 years or so of C's history, but you could always do some creative
byte twiddling if the need arouse.  

-- 
http://mail.python.org/mailman/listinfo/python-list


Best way to check if string is an integer?

2008-04-05 Thread skanemupp
which is the best way to check if a string is an number or a char?
could the 2nd example be very expensive timewise if i have to check a
lot of strings?

this

value = raw_input()

try:
value = int(value)
except ValueError:
print value is not an integer


or:


c=raw_input(yo: )
if c in '0123456789':
print integer
else:
print char



or some other way?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread Andrew Warkentin
[EMAIL PROTECTED] wrote:

which is the best way to check if a string is an number or a char?
could the 2nd example be very expensive timewise if i have to check a
lot of strings?

this

value = raw_input()

try:
value = int(value)
except ValueError:
print value is not an integer


or:


c=raw_input(yo: )
if c in '0123456789':
print integer
else:
print char



or some other way?
  

I always do it the first way. It is simpler, and should be faster. Also, 
the second way will only work on single-digit numbers (you would have to 
iterate over the entire string with a for loop to use it on numbers with 
more than one digit).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread Mark Dickinson
On Apr 5, 6:19 pm, [EMAIL PROTECTED] wrote:
 which is the best way to check if a string is an number or a char?
 could the 2nd example be very expensive timewise if i have to check a
 lot of strings?

You might be interested in str.isdigit:

 print str.isdigit.__doc__
S.isdigit() - bool

Return True if all characters in S are digits
and there is at least one character in S, False otherwise.

Mark
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread John Machin
On Apr 6, 9:25 am, Mark Dickinson [EMAIL PROTECTED] wrote:
 On Apr 5, 6:19 pm, [EMAIL PROTECTED] wrote:

  which is the best way to check if a string is an number or a char?
  could the 2nd example be very expensive timewise if i have to check a
  lot of strings?

 You might be interested in str.isdigit:

  print str.isdigit.__doc__

 S.isdigit() - bool

 Return True if all characters in S are digits
 and there is at least one character in S, False otherwise.


This doesn't cater for negative integers.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread Tim Chase
 I always do it the first way. It is simpler, and should be faster.

Ditto.  Using int() is best.  It's clear, it's correct, and it 
should be as fast as it gets.

 if c in '0123456789':
print integer
 else:
print char

 Also, the second way will only work on single-digit numbers
 (you would have to iterate over the entire string with a for
 loop to use it on numbers with more than one digit).

It also catches things like c=1234 but misses negative numbers 
too.  It's a bad solution on a number of levels.  The isdigit() 
method of a string does much of what int() does for testing is 
this an int except that it too misses negative numbers.

-tkc


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread Steve Holden
John Machin wrote:
 On Apr 6, 9:25 am, Mark Dickinson [EMAIL PROTECTED] wrote:
 On Apr 5, 6:19 pm, [EMAIL PROTECTED] wrote:

 which is the best way to check if a string is an number or a char?
 could the 2nd example be very expensive timewise if i have to check a
 lot of strings?
 You might be interested in str.isdigit:

 print str.isdigit.__doc__
 S.isdigit() - bool

 Return True if all characters in S are digits
 and there is at least one character in S, False otherwise.

 
 This doesn't cater for negative integers.
 
No, it doesn't, but

s.isdigit() or (s[0] in +- and s[1:].isdigit) # untested

does. and *may* be quicker than other examples. Not that speed is 
usually a concern in validation routines anyway ...

regards
  Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC  http://www.holdenweb.com/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread Roy Smith
In article [EMAIL PROTECTED],
 Steve Holden [EMAIL PROTECTED] wrote:

  This doesn't cater for negative integers.
  
 No, it doesn't, but
 
 s.isdigit() or (s[0] in +- and s[1:].isdigit) # untested
 
 does.

I think this fails on-1.  So, then you start doing 
s.strip().isdigit(), and then somebody else comes up with some other 
unexpected corner case...

int(s) and catching any exception thrown just sounds like the best way.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread ernie
On Apr 6, 10:23 am, Roy Smith [EMAIL PROTECTED] wrote:
 In article [EMAIL PROTECTED],
  Steve Holden [EMAIL PROTECTED] wrote:

   This doesn't cater for negative integers.

  No, it doesn't, but

  s.isdigit() or (s[0] in +- and s[1:].isdigit) # untested

  does.

 I think this fails on-1.  So, then you start doing
 s.strip().isdigit(), and then somebody else comes up with some other
 unexpected corner case...

 int(s) and catching any exception thrown just sounds like the best way.

Another corner case: Is 5.0 an integer or treated as one?

regards,
ernie
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Best way to check if string is an integer?

2008-04-05 Thread Paddy
On Apr 6, 5:18 am, ernie [EMAIL PROTECTED] wrote:
 On Apr 6, 10:23 am, Roy Smith [EMAIL PROTECTED] wrote:



  In article [EMAIL PROTECTED],
   Steve Holden [EMAIL PROTECTED] wrote:

This doesn't cater for negative integers.

   No, it doesn't, but

   s.isdigit() or (s[0] in +- and s[1:].isdigit) # untested

   does.

  I think this fails on-1.  So, then you start doing
  s.strip().isdigit(), and then somebody else comes up with some other
  unexpected corner case...

  int(s) and catching any exception thrown just sounds like the best way.

 Another corner case: Is 5.0 an integer or treated as one?

 regards,
 ernie

In Python, 5.0 is a float 5.0 is a string, and you need to make your
mind up about what type you want 5.0 to be represented as in your
program and code accordingly.

- Paddy.
-- 
http://mail.python.org/mailman/listinfo/python-list