質問

私は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'を使用してアンダースコアを捨てます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top