ValidateFieldName
Summary
Takes a string (field name) and a workspace path and returns a valid field name based on name restrictions in the output geodatabase. All invalid characters in the input string will be replaced with an underscore (_). The field name restrictions depend on the specific database used (Structured Query Language [SQL] or Oracle).
Syntax
| Parameter | Explanation | Data Type |
name |
The field name to be validated. If the optional workspace is not specified, the field name is validated against the current workspace. | String |
workspace |
An optional specified workspace to validate the field name against. The workspace can be a file system or a personal, file, or ArcSDE geodatabase. | String |
| Data Type | Explanation |
| String |
Returns a string containing the valid field name, based on either the current or specified workspace. |
Code Sample
Returns a valid field name based on the workspace.
class FieldError(Exception):
pass
class ShapeError(Exception):
pass
import arcpy
import os
try:
# Get the input feature class and make sure it contains polygons.
#
input = arcpy.GetParameterAsText(0)
dscFC = arcpy.Describe(input)
if dscFC.shapeType.lower() != "polygon":
# Raise a custom exception
raise ShapeError
# Get the new field name and validate it.
#
fieldName = arcpy.GetParameterAsText(1)
fieldName = arcpy.ValidateFieldName(fieldName, os.path.dirname(input))
# Make sure shape_length and shape_area fields exist
#
if len(arcpy.ListFields(input,"Shape_area")) > 0 and \
len(arcpy.ListFields(input,"Shape_length")) > 0:
# Add the new field and calculate the value.
#
arcpy.AddField_management(input, fieldName, "double")
arcpy.CalculateField_management(input,fieldName,
"[Shape_Area] / [Shape_Length]")
else:
# Raise a custom exception
raise FieldError
except ShapeError:
print "Input does not contain polygons"
except FieldError:
print "Input does not contain shape_area and shape_length fields"
except:
print arcpy.GetMessages(2)