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

7
我希望提取下划线之间的字符。下划线两侧的字符数量会有所不同,但只会有两个下划线。长字符串带有下划线是文本字段,要填写的字段是短整型。我能够解析出下划线前面和后面的字符,并在要素类中填充其他字段,但一直无法将中间部分放入新字段。
例如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个回答

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

将输出“test”


这是我问题的最简单答案,而且它起作用了。谢谢@ksun! - cherrytree
FYI,这实际上不会返回两个下划线之间的字符,而是返回一个下划线后面的每个字符(这正是OP想要的,但不是问题标题的答案)。 - Manuel Reis

2

我相信您需要一个正则表达式

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接