devolver caracteres entre dos guiones bajos
-
20-12-2019 - |
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
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: (?<=_).+(?=_)