[openaddresses] Better handling of float postcodes
This commit is contained in:
@@ -117,6 +117,26 @@ class OpenAddressesFormatter(object):
|
|||||||
|
|
||||||
return country_name
|
return country_name
|
||||||
|
|
||||||
|
def cleanup_postcode(self, postcode):
|
||||||
|
postcode = postcode.strip()
|
||||||
|
try:
|
||||||
|
postcode_int = int(postcode)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
try:
|
||||||
|
postcode_float = float(postcode)
|
||||||
|
num_leading_zeros = 0
|
||||||
|
for c in postcode:
|
||||||
|
if c == six.u('0'):
|
||||||
|
num_leading_zeros += 1
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
postcode = safe_decode(int(postcode_float))
|
||||||
|
if num_leading_zeros:
|
||||||
|
postcode = six.u('{}{}').format(six.u('0') * num_leading_zeros, postcode)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
pass
|
||||||
|
return postcode
|
||||||
|
|
||||||
def formatted_addresses(self, path, configs, tag_components=True):
|
def formatted_addresses(self, path, configs, tag_components=True):
|
||||||
abbreviate_street_prob = float(self.get_property('abbreviate_street_probability', *configs))
|
abbreviate_street_prob = float(self.get_property('abbreviate_street_probability', *configs))
|
||||||
separate_street_prob = float(self.get_property('separate_street_probability', *configs) or 0.0)
|
separate_street_prob = float(self.get_property('separate_street_probability', *configs) or 0.0)
|
||||||
@@ -208,15 +228,7 @@ class OpenAddressesFormatter(object):
|
|||||||
|
|
||||||
postcode = components.get(AddressFormatter.POSTCODE, None)
|
postcode = components.get(AddressFormatter.POSTCODE, None)
|
||||||
if postcode:
|
if postcode:
|
||||||
postcode = postcode.strip()
|
postcode = self.cleanup_postcode(postcode)
|
||||||
try:
|
|
||||||
postcode = int(postcode)
|
|
||||||
except (ValueError, TypeError):
|
|
||||||
try:
|
|
||||||
postcode = float(postcode)
|
|
||||||
postcode = safe_decode(int(postcode))
|
|
||||||
except (ValueError, TypeError):
|
|
||||||
postcode = safe_decode(postcode)
|
|
||||||
|
|
||||||
if postcode_strip_non_digit_chars:
|
if postcode_strip_non_digit_chars:
|
||||||
postcode = six.u('').join((c for c in postcode if c.isdigit()))
|
postcode = six.u('').join((c for c in postcode if c.isdigit()))
|
||||||
|
|||||||
Reference in New Issue
Block a user