2つのアンダースコアの間の文字を返します
-
20-12-2019 - |
質問
私は2つのアンダースコアの間に文字列を抽出したいと思います。'_'の両側との間の文字数はさまざまですが、2つのアンダースコアだけがあります。アンダースコアの長いフィールドはテキストフィールドであり、埋められるフィールドは短い整数です。アンダースコアの前後に文字を解析し、フィーチャクラスの他のフィールドを入力できますが、中央セクションを新しいフィールドに配置できませんでした。
例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)に埋められるフィールドはまだ空です。
感謝 -
解決
print "my_test_string".split('_')[1]
.
「テスト」
を出力します他のヒント
私はあなたが欲しいと思います regex :
import re
m = re.search('_.+_', 'goodbye_cruel_world')
m.group(0) # returns '_cruel_'
.
待って、私たちはもっとうまくいくことができます!次の regex は、'look(ahead|behind)s'
を使用してアンダースコアを捨てます。
所属していません StackOverflow