Je veux nettoyer la table d'attributs d'un fichier de formes de route pour toutes les entrées dans les champs.
Par exemple: comme indiqué ci-dessous, j'ai une entité routière avec un "nom", un nom de et un nom à dans la liste d'attributs. Dans la ligne sélectionnée, le nom du segment est Louis Botha.
Le NameFrom contient également ce nom de segment (Louis Botha & Unknown).
Après avoir nettoyé les données, je souhaite uniquement que les éléments suivants soient présentés dans les champs appropriés:
Nom = Louis Botha Nom De = Nom inconnu À = Janeke
Existe-t-il un moyen de supprimer cela dans les champs "nom de" et "nom de" pour TOUS les attributs?
arcpy
arcgis-10.1
fields-attributes
Dean van den Heever
la source
la source
Réponses:
Le script suivant exécute les actions que vous effectuez après avoir utilisé un curseur. Il y a beaucoup de gestion des erreurs pour faire face à de nombreux problèmes potentiels - supprimez-les si nécessaire. Cela modifie les données d'origine, alors assurez-vous de l'exécuter sur une copie pour vous assurer que les résultats correspondent à ce que vous recherchez. J'ai ajouté des commentaires dans le script plutôt que de le souligner ici.
la source
Vous pouvez utiliser la fonction Python suivante dans Field Calculator.
Copiez ce qui précède dans la section de code de script blocbloc / pré-logique. Vous pouvez l'exécuter une fois pour Name_From en utilisant
remove_name(!Name!, !Name_From!)
comme expression et une deuxième fois pour Name_To en utilisantremove_name(!Name!, !Name_To!)
.Ce code fonctionnera non seulement pour les cas où la valeur Name est au début ou à la fin de Name_From / Name_To , mais aussi pour ceux où elle se trouve au milieu. Par exemple,
remove_name('Janeke', 'Hereeniging & Janeke & Willemse')
renvoie'Hereeniging & Willemse'
. Pour que cela fonctionne, les noms d'entrée doivent être séparés par des esperluettes (&
).la source