Вопрос

Я хотел бы извлечь строку символов между двумя подчеркиваниями.Количество символов между символом «_» и с каждой его стороны может различаться, но подчеркивания всегда будет только два.Длинное поле с подчеркиванием — это текстовое поле, поле для заполнения — короткое целое число.Мне удалось проанализировать символы до и после подчеркивания и заполнить другие поля в классе объектов, но мне не удалось поместить среднюю часть в новое поле.

Пример 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' чтобы отказаться от подчеркиваний и оставить вам то, что важно: (?<=_).+(?=_)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top