[utils] Improve str_to_int
parent
73d8f3a634
commit
42db58ec73
|
@ -500,6 +500,11 @@ class TestUtil(unittest.TestCase):
|
||||||
self.assertEqual(str_to_int('123,456'), 123456)
|
self.assertEqual(str_to_int('123,456'), 123456)
|
||||||
self.assertEqual(str_to_int('123.456'), 123456)
|
self.assertEqual(str_to_int('123.456'), 123456)
|
||||||
self.assertEqual(str_to_int(523), 523)
|
self.assertEqual(str_to_int(523), 523)
|
||||||
|
# Python 3 has no long
|
||||||
|
if sys.version_info < (3, 0):
|
||||||
|
eval('self.assertEqual(str_to_int(123456L), 123456)')
|
||||||
|
self.assertEqual(str_to_int('noninteger'), None)
|
||||||
|
self.assertEqual(str_to_int([]), None)
|
||||||
|
|
||||||
def test_url_basename(self):
|
def test_url_basename(self):
|
||||||
self.assertEqual(url_basename('http://foo.de/'), '')
|
self.assertEqual(url_basename('http://foo.de/'), '')
|
||||||
|
|
|
@ -46,6 +46,7 @@ from .compat import (
|
||||||
compat_html_entities,
|
compat_html_entities,
|
||||||
compat_html_entities_html5,
|
compat_html_entities_html5,
|
||||||
compat_http_client,
|
compat_http_client,
|
||||||
|
compat_integer_types,
|
||||||
compat_kwargs,
|
compat_kwargs,
|
||||||
compat_os_name,
|
compat_os_name,
|
||||||
compat_parse_qs,
|
compat_parse_qs,
|
||||||
|
@ -3519,10 +3520,11 @@ def str_or_none(v, default=None):
|
||||||
|
|
||||||
def str_to_int(int_str):
|
def str_to_int(int_str):
|
||||||
""" A more relaxed version of int_or_none """
|
""" A more relaxed version of int_or_none """
|
||||||
if not isinstance(int_str, compat_str):
|
if isinstance(int_str, compat_integer_types):
|
||||||
return int_str
|
return int_str
|
||||||
|
elif isinstance(int_str, compat_str):
|
||||||
int_str = re.sub(r'[,\.\+]', '', int_str)
|
int_str = re.sub(r'[,\.\+]', '', int_str)
|
||||||
return int(int_str)
|
return int_or_none(int_str)
|
||||||
|
|
||||||
|
|
||||||
def float_or_none(v, scale=1, invscale=1, default=None):
|
def float_or_none(v, scale=1, invscale=1, default=None):
|
||||||
|
|
Loading…
Reference in New Issue