Re: Best way to check if string is an integer?
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?
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?
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?
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?
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?
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?
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?
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?
[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?
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?
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?
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?
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?
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?
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?
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