返回两个下划线之间的字符

时间:2014-02-25 00:22:17

标签: string python-2.7 substring arcpy arcmap

我想在两个下划线之间提取一串字符。 '_'两侧之间和之间的字符数会有所不同,但只会有两个下划线。带下划线的长字段是文本字段,要填写的字段是短整数。我已经能够解析下划线前后的字符并填充要素类中的其他字段,但是无法将中间部分放入新字段中。

示例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)仍然是空的。

由于 -al

2 个答案:

答案 0 :(得分:3)

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

将输出“test”

答案 1 :(得分:1)

我相信你想要一个正则表达式

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

但是等等,我们可以做得更好!以下正则表达式使用'look(ahead|behind)s'来丢弃下划线,因此留下了重要的内容:(?<=_).+(?=_)