Suite

Concaténer du texte et une chaîne dans l'expression du calculateur de champs (python)


J'essaie de copier une valeur d'attribut d'un champ à un autre (somme des valeurs raster), mais j'ai des problèmes pour écrire une expression fonctionnelle pour un script Calculate Field. J'ajoute un champ appeléSOMMEet essayer de copier la valeur du champ"SUM_" + nom de fichier[0:-4]. J'ai plusieurs fichiers sur lesquels j'essaie de le faire et les noms de champ sont différents dans chacun, c'est pourquoi il est écrit de cette manière.

Voici le code que j'ai pour l'instant :

pour la table dans arcpy.ListTables() : arcpy.AddField_management(table, "SUM", "DOUBLE") expression = ["SUM_" + str(filename[0:-4])] arcpy.CalculateField_management(table, "SUM" , expression, "VB")

Cela ne fonctionne pas car je reçois l'erreur suivante :

Fichier "C:UserskellyjDesktopProjectsCostAnalysisRoute_Cost_Analysis.py", ligne 82, dans  arcpy.CalculateField_management(table, "SUM", expressionvalue, "VB") Fichier "C:Program Files (x86)ArcGISDesktop10.2arcpyarcpymanagement.py", ligne 3354, dans CalculateField raise e RuntimeError : Objet : Erreur lors de l'exécution de l'outil

Des idées sur la façon dont je peux résoudre ce problème ?


Vous devez avoir un crochet entourant la chose "SUM_"

Essayer le changement

expression = ["SUM_" + str(nom de fichier[0:-4])]

à

expression = "[SUM_{0}]".format(str(filename[0:-4]))

Les crochets doivent être à l'intérieur de la chaîne, sinon les crochets créeront une liste Python. Lorsque Python passe une chaîne contenant des crochets à l'intérieur comme expression, Python n'interprète pas les crochets, mais le calculateur de champs interprète l'expression entre crochets dans la chaîne comme un nom de champ. Utilisez le code qui suit :

pour la table dans arcpy.ListTables() : arcpy.AddField_management(table, "SUM", "DOUBLE") expression = "[SUM_{0}]".format(str(filename[0:-4])) arcpy.CalculateField_management (table, "SOMME", expression, "VB")


Voir la vidéo: Python Chaînes de caractères - partie 1 (Octobre 2021).