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

示例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

有帮助吗?

解决方案

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

将输出“测试”

其他提示

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

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

但等等,我们可以做得更好!以下 Regex 使用'look(ahead|behind)s'丢弃下划线,因此使您带来什么重要的:(?<=_).+(?=_)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top