ritorno caratteri tra due sottolineature
-
20-12-2019 - |
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
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: (?<=_).+(?=_)