Gibt Zeichen zwischen zwei Unterstrichen zurück
-
20-12-2019 - |
Frage
Ich möchte eine Zeichenfolge zwischen zwei Unterstrichen extrahieren.Die Anzahl der Zeichen zwischen und auf jeder Seite des „_“ variiert, es werden jedoch immer nur zwei Unterstriche verwendet.Das lange Feld mit Unterstrichen ist ein Textfeld, das auszufüllende Feld ist eine kurze Ganzzahl.Ich konnte die Zeichen vor und nach den Unterstrichen analysieren und andere Felder in der Feature-Class ausfüllen, konnte den Mittelteil jedoch nicht in einem neuen Feld platzieren.
Beispiel 1:102_1204_234324
Ich möchte „1204“ zurückgeben.
Beispiel 2:324423_1_342
Ich möchte '1' zurückgeben
Ich habe eine Reihe von Varianten ausprobiert und die eine, die meiner Meinung nach funktionieren sollte, ist:
# 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", "")
Was meiner Meinung nach eine Liste erstellen und dann jedes zweite Element der Liste zurückgeben würde.Allerdings ist das auszufüllende Feld (testField) noch leer.
Danke -al
Lösung
Ausgabe "Test"
Andere Tipps
Ich glaube, du willst ein Regex:
import re
m = re.search('_.+_', 'goodbye_cruel_world')
m.group(0) # returns '_cruel_'
Aber warten Sie, wir können es besser machen!Die folgende Regex Verwendet 'look(ahead|behind)s'
die Unterstriche wegzulassen, und so bleiben Sie bei dem, was wichtig ist: (?<=_).+(?=_)