retornar caracteres entre dois sublinhados
-
20-12-2019 - |
Pergunta
Gostaria de extrair uma sequência de caracteres entre dois sublinhados.O número de caracteres entre e em cada lado do '_' irá variar, mas sempre haverá apenas dois sublinhados.O campo longo com sublinhados é um campo de texto, o campo a ser preenchido é um número inteiro curto.Consegui analisar os caracteres antes e depois dos sublinhados e preencher outros campos na classe de recurso, mas não consegui colocar a seção intermediária em um novo campo.
Exemplo 1:102_1204_234324
Eu quero retornar '1204'
Exemplo 2:324423_1_342
Eu quero retornar '1'
Eu tentei várias variações e a que acho que deveria funcionar é:
# 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", "")
O que eu acho que criaria uma lista e retornaria cada segundo elemento da lista.Porém o campo a ser preenchido (testField) ainda está vazio.
Obrigado -al
Solução
print "my_test_string".split('_')[1]
Irá gerar "teste"
Outras dicas
Eu acredito que você quer um expressão regular:
import re
m = re.search('_.+_', 'goodbye_cruel_world')
m.group(0) # returns '_cruel_'
Mas espere, podemos fazer melhor!A seguir expressão regular usa 'look(ahead|behind)s'
para descartar os sublinhados, deixando você com o que é importante: (?<=_).+(?=_)