2 votos

Cambiar automáticamente los nombres de los campos

Tengo una tabla de atributos con más de 2500 campos. Unos 2000 campos empiezan por el nombre "All_txt_" (por ejemplo, "All_txt_Watermelon").

¿Existe alguna forma de eliminar automáticamente este "All_txt_" de todos los nombres de campo? (para que el nombre sea "Sandía"). ¿O alguien sabe cómo hacerlo en Python? Trabajo con la versión 10.1 y el Campo Alter no es una opción.

7voto

Luke Puntos 2163

Mi método para ello fue utilizar las funciones de mapeo de campos y conversión de tabla a tabla. Con las asignaciones de campos puede establecer nuevos campos basados en los nombres de los campos de la tabla de entrada.

El siguiente enlace contiene ejemplos de clases de características: http://resources.arcgis.com/en/help/main/10.1/index.html#//018z0000007p000000

Mi código a continuación cambiará todos los campos en una tabla de entrada que comienzan con "All_txt_" a un nuevo nombre. Por ejemplo "All_txt_SomeName" a "SomeName".

import os
import arcpy

table = r"PATH TO INPUT TABLE"
new_tb = r"PATH TO OUTPUT TABLE"

field_mappings = arcpy.FieldMappings() # Create new field mapping object

#Loop through fields. For each field, create a corresponding FieldMap object.
#If the name begins with "ALL_txt_", create a new name.
#Note: "FID and "Shape" are skipped

for field in arcpy.ListFields(table):
    if not field.name == "FID" and not field.name == "Shape":
        old_name = field.name

        #Rename if necessary
        if old_name.startswith("All_txt_"):
            new_name = old_name.strip("All_txt_")
        else:
            new_name = old_name

        #Create new FieldMap object    
        new_f = arcpy.FieldMap()
        new_f.addInputField(table,old_name) # Specify the input field to use

        #Rename output field
        new_f_name = new_f.outputField
        new_f_name.name = new_name
        new_f_name.aliasName = new_name
        new_f.outputField = new_f_name

        #Add field to FieldMappings object
        field_mappings.addFieldMap(new_f)

#Convert table using your created Field Mappings object
arcpy.TableToTable_conversion(table, os.path.dirname(new_tb), os.path.basename(new_tb), field_mapping=field_mappings)

Espero que esto resuelva tu problema.

(Si desea llevar a cabo este proceso en una feature class, basta con especificar la entrada/salida como rutas válidas de feature class y utilizar FeatureClassToFeatureClass_conversion).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X