Question

Je voudrais extraire une chaîne de caractères entre deux traits de soulignement.Le nombre de caractères entre et de chaque côté du « _ » varie, mais il n'y aura que deux traits de soulignement.Le champ long avec des traits de soulignement est un champ de texte, le champ à renseigner est un entier court.J'ai pu analyser les caractères avant et après les traits de soulignement et remplir d'autres champs de la classe d'entités, mais je n'ai pas pu placer la section du milieu dans un nouveau champ.

Exemple 1:102_1204_234324

Je veux renvoyer '1204'

Exemple 2 :324423_1_342

Je veux retourner '1'

J'ai essayé un certain nombre de variantes et celle qui, à mon avis, devrait fonctionner est la suivante :

# Import system modules
import arcpy
#from arcpy import env

# Set environment settings
arcpy.env.workspace = "c:/temp/testing.gdb"

# Set local variables
inFeatures = "testFeature"
fieldName = "testField"
expression = "!parse_field!.split('_')[1::2]"

# Execute CalculateField 
arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON", "")

Ce qui, je pense, créerait une liste, puis renverrait un élément sur deux de la liste.Cependant le champ à renseigner (testField) est toujours vide.

Merci -al

Était-ce utile?

La solution

    print "my_test_string".split('_')[1]

produira "test"

Autres conseils

Je crois que tu veux un expression régulière:

import re
m = re.search('_.+_', 'goodbye_cruel_world')
m.group(0) # returns '_cruel_'

Mais attendez, nous pouvons faire mieux !Ce qui suit expression régulière les usages 'look(ahead|behind)s' pour supprimer les traits de soulignement, et vous laisse ainsi avec ce qui est important : (?<=_).+(?=_)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top