문제

두 개의 밑줄 사이에서 문자열 문자열을 추출하고 싶습니다.'_'의 각면 사이의 문자 수는 다양하지만 두 개의 밑줄이있을 것입니다.밑줄이있는 긴 필드는 텍스트 필드이므로 채워질 필드는 짧은 정수입니다.저는 밑줄을 전후의 문자를 구문 분석하고 기능 클래스의 다른 필드를 채 웁니다. 그러나 중간 섹션을 새 필드에 배치 할 수 없었습니다.

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

목록을 만들고 목록의 모든 두 번째 요소를 반환합니다.그러나 (테스트 필드)에 채울 필드는 여전히 비어 있습니다.

고맙습니다 -

도움이 되었습니까?

해결책

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

는 "test"를 출력합니다

다른 팁

나는 당신이 regex 을 원한다고 믿습니다 :

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

그러나 기다리고, 우리는 더 잘할 수 있습니다!다음 regex 'look(ahead|behind)s'를 사용하여 밑줄을 삭제하므로 중요한 내용을 남겨주세요 : (?<=_).+(?=_)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top