Pregunta

Me gustaría extraer una cadena de caracteres entre dos guiones bajos.El número de caracteres entre y en cada lado de la '_' variará, pero solo habrá dos guiones bajos.El campo largo con los subrosicos es un campo de texto, el campo a rellenar es un entero corto.He podido analizar los caracteres antes y después de los guiones bajos y llenar otros campos en la clase de entidad, pero no han podido colocar la sección central en un nuevo campo.

Ejemplo 1: 102_1204_234324

Quiero devolver '1204'

Ejemplo 2: 324423_1_342

Quiero devolver '1'

He intentado una serie de variaciones y la que creo que debería funcionar es:

# 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", "")

que pensaría crearía una lista, luego devolvería cada segundo elemento de la lista.Sin embargo, el campo a rellenar (Testfield) todavía está vacío.

gracias -al

¿Fue útil?

Solución

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

saldrá de "prueba"

Otros consejos

Creo que desea un REGEX :

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

Pero espera, podemos hacerlo mejor!Los siguientes REGEX utilizan 'look(ahead|behind)s' para descartar los guiones bajos, y así lo deja con lo que es importante: (?<=_).+(?=_)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top