[openaddresses] some postcodes in OpenAddresses are stored as floats, convert to int and then to string if that's the case
This commit is contained in:
@@ -11,7 +11,7 @@ from geodata.address_expansions.gazetteers import street_types_gazetteer, unit_t
|
|||||||
from geodata.address_formatting.formatter import AddressFormatter
|
from geodata.address_formatting.formatter import AddressFormatter
|
||||||
from geodata.addresses.components import AddressComponents
|
from geodata.addresses.components import AddressComponents
|
||||||
from geodata.countries.names import country_names
|
from geodata.countries.names import country_names
|
||||||
from geodata.encoding import safe_decode
|
from geodata.encoding import safe_decode, safe_encode
|
||||||
from geodata.math.sampling import cdf, weighted_choice
|
from geodata.math.sampling import cdf, weighted_choice
|
||||||
from geodata.text.utils import is_numeric, is_numeric_strict
|
from geodata.text.utils import is_numeric, is_numeric_strict
|
||||||
|
|
||||||
@@ -209,6 +209,15 @@ class OpenAddressesFormatter(object):
|
|||||||
postcode = components.get(AddressFormatter.POSTCODE, None)
|
postcode = components.get(AddressFormatter.POSTCODE, None)
|
||||||
if postcode:
|
if postcode:
|
||||||
postcode = postcode.strip()
|
postcode = postcode.strip()
|
||||||
|
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