Select to view content in your preferred language

replace double space with single spaces

199
2
03-13-2025 08:37 AM
MichaelKohler
Frequent Contributor

Hi,

I am trying to replace double spaces in an address with a single space. In pro, I can do this using .replace() like this !Service_Address!.replace("  "," ")

but when I try this within arcpy, I get an error

arcgisscripting.ExecuteError: ERROR 000539: File "<expression>", line 1
 u"106 NE ENTRADA AVE".replace( , )

The replace parameters are not showing.

any ideas?

0 Kudos
2 Replies
MichaelKohler
Frequent Contributor

this worked

calc = "!matched!.replace('  ',' ')"
arcpy.management.CalculateField(cis_tbl,"matched",calc,'PYTHON3')

 

TonyAlmeida
MVP Regular Contributor

 

fc = "layer"  # path to layer
field_name = "Field"  #  field name

arcpy.management.CalculateField(fc, field_name, "!{}!.replace('  ', ' ')".format(field_name), "PYTHON3")

 

if you wan to do multiple spaces with a single space in addresses you can do something like this,

import arcpy

# Replace multiple spaces with a single space in a string
def replace_multiple_spaces(address):
    return ' '.join(address.split())

# Example: Update a feature class field with cleaned addresses
def clean_addresses_in_feature_class(feature_class, address_field):
    with arcpy.da.UpdateCursor(feature_class, [address_field]) as cursor:
        for row in cursor:
            address = row[0]
            if address:  # Check if the address is not empty
                cleaned_address = replace_multiple_spaces(address)
                row[0] = cleaned_address
                cursor.updateRow(row)

# Example usage
feature_class = "layer"  # layer
address_field = "Field"  # Field  addresses
clean_addresses_in_feature_class(feature_class, address_field)

print("Addresses cleaned successfully!")