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

String 返回两个下划线之间的字符,string,python-2.7,substring,arcpy,arcmap,String,Python 2.7,Substring,Arcpy,Arcmap,我想提取两个下划线之间的字符串。“\u1”两侧和之间的字符数会有所不同,但只有两个下划线。带下划线的长字段是文本字段,要填充的字段是短整数。我能够解析出下划线前后的字符,并填充要素类中的其他字段,但无法将中间部分放入新字段 示例1:102_1204_234324 我想返回'1204' 示例2:324423_1_342 我想返回“1” 我已经尝试了许多变体,我认为应该有效的是: # Import system modules import arcpy #from arcpy import env

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

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

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

进口稀土 m=重新搜索“+”、“再见”\u残酷的世界” m、 group0返回“\u\u” 但是等等,我们可以做得更好!下面的正则表达式使用“lookahead | behinds”来丢弃下划线,因此留给您重要的内容:?我相信您需要正则表达式:

进口稀土 m=重新搜索“+”、“再见”\u残酷的世界” m、 group0返回“\u\u” 但是等等,我们可以做得更好!下面的正则表达式使用“lookahead | behinds”来丢弃下划线,因此留下了重要的内容:? 将输出测试


Will output test(将输出测试)

这是对我的问题的最简单的回答,它起了作用。谢谢@ksun!仅供参考,这实际上不会返回两个下划线之间的字符,而是一个下划线之后的每个字符,这是OP想要的,但不是问题标题的答案这是我问题的最简单答案,它起了作用。谢谢@ksun!仅供参考,这实际上并不返回两个下划线之间的字符,而是一个下划线之后的每个字符,这是OP想要的,但不是问题标题的答案
    print "my_test_string".split('_')[1]