[utils] Improve str_to_int
This commit is contained in:
		
							parent
							
								
									73d8f3a634
								
							
						
					
					
						commit
						42db58ec73
					
				
					 2 changed files with 10 additions and 3 deletions
				
			
		| 
						 | 
					@ -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
 | 
				
			||||||
    int_str = re.sub(r'[,\.\+]', '', int_str)
 | 
					    elif isinstance(int_str, compat_str):
 | 
				
			||||||
    return int(int_str)
 | 
					        int_str = re.sub(r'[,\.\+]', '', 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue