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

Foi útil?

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: (?<=_).+(?=_)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top