вернуть символы между двумя подчеркиваниями
-
20-12-2019 - |
Вопрос
Я хотел бы извлечь строку символов между двумя подчеркиваниями.Количество символов между символом «_» и с каждой его стороны может различаться, но подчеркивания всегда будет только два.Длинное поле с подчеркиванием — это текстовое поле, поле для заполнения — короткое целое число.Мне удалось проанализировать символы до и после подчеркивания и заполнить другие поля в классе объектов, но мне не удалось поместить среднюю часть в новое поле.
Пример 1:102_1204_234324
Я хочу вернуть «1204»
Пример 2:324423_1_342
Я хочу вернуть «1»
Я попробовал несколько вариантов, и, по моему мнению, должен сработать следующий:
# 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", "")
Я думаю, что это создаст список, а затем вернет каждый второй элемент списка.Однако поле для заполнения (testField) по-прежнему пусто.
Спасибо -ла
Решение
print "my_test_string".split('_')[1]
.
выводят "тест"
Другие советы
Я верю, что ты хочешь регулярное выражение:
import re
m = re.search('_.+_', 'goodbye_cruel_world')
m.group(0) # returns '_cruel_'
Но подождите, мы можем сделать лучше!Следующее регулярное выражение использует 'look(ahead|behind)s'
чтобы отказаться от подчеркиваний и оставить вам то, что важно: (?<=_).+(?=_)