# Field Calculator Python

I have a point file that has a field in it that lists all the streets at an intersection, eg) 1st St & A blvd & 2nd Ave etc

I want to be able to separate each street out individually into its own separate field.

I have some Python code I managed to field to use in field calculator that seems to work until it hits a field that doesnt have a 3rd street (and thus a third '&' symbol) so its erroring out.

How can I make it pass over these instances so it can run successfully? I think its erroring out on the 3rd passes when it comes across field with only 2 streets, eg 1st Ave & 2nd Ave

Code is below

Pre-Logic

``````def getField(inField):
if inField is None:
return None
else:
return inField.split(' & ')

getField ( Names! )
``````

Edit

This is basically what I want to do, a simple formula in excel seperates them, just trying to find the Python equivalent in ArcMAp

https://ibb.co/rGHVvT1

You are not showing all your code. But you could check if split list is to short, and if so then extend with empty string. Example:

``````a = '1st St & A blvd'
s = a.split(' & ')
print s

diff = 3-len(s)
if diff != 0:
s.extend([' ']*diff)

print s
``````

Outputs:

``````['1st St', 'A blvd']
['1st St', 'A blvd', ' ']
``````

Or use try/except:

``````a = [1,2]
try:
print a
except IndexError: #a is not possible, will give Indexerror, then dont do anything:
pass
``````

You could automate everything if you dont mind skipping field calculator:

``````import arcpy

fc = r'C:\GIS\ArcMap_default_folder\Default.gdb\ak_riks'
splitfield = ['KOMMUNNAMN']

rows = [i for i in arcpy.da.SearchCursor(fc,splitfield)] #List all splitfield values
fields_needed = max([len(r.split('a')) for r in rows]) #Find out how many new fields are needed
prefix = 'Split_' #What to name new fields

newfields = []
for f in range(0,fields_needed):
newfield = prefix+str(f)
newfields.append(newfield)

with arcpy.da.UpdateCursor(fc, splitfield+newfields) as cursor:
for row in cursor:
newdata = row.split('a')
diff = len(newfields) - len(newdata)
if diff > 0:
newdata = newdata+[' ']*diff
else:
newdata = newdata[:len(newfields)]
row[1:] = newdata
cursor.updateRow(row)
`````` 