Domanda

Vorrei estrarre una stringa di personaggi tra due sottolineature.Il numero di personaggi tra e su ciascun lato del '_' varierà, ma ci saranno solo due sottolineature.Il campo lungo con caratteri di sottolineatura è un campo di testo, il campo da compilare è un breve numero intero.Sono stato in grado di analizzare i caratteri prima e dopo le sottolineature e riempire altri campi nella classe caratteristica, ma non è stato in grado di posizionare la sezione centrale in un nuovo campo.

Esempio 1: 102_1204_234324

Voglio restituire '1204'

Esempio 2: 324423_1_342

Voglio restituire '1'

Ho provato un numero di varianti e quella che penso dovrebbe funzionare è:

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

Quale penserei creerebbe un elenco, quindi restituirebbe ogni secondo elemento dell'elenco.Tuttavia il campo da compilare (Testfield) è ancora vuoto.

Grazie -Al

È stato utile?

Soluzione

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

Uterrà "Test"

Altri suggerimenti

Credo che tu voglia un regex :

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

Ma aspetta, possiamo fare di meglio!I seguenti regex utilizza 'look(ahead|behind)s' per scartare i caratteri di sottolineatura, e quindi ti lascia con ciò che è importante: (?<=_).+(?=_)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top