0

FieldCalculatorを使用してArcmapで作業しています。

私は次のような値の属性を持っています:

"addr:city" = "Bielefeld"、 "addrostcode" = "33699"、 "addr:street" = "Westerkamp" "addr:city" = "Bielefeld"、 "addr:street"="DetmolderStraße""addr: city "=" Beelefeld "、" addr:housenumber "=" 34 "

それらを個々の属性に抽出したいと思います。

だから私は次のようなコードが必要だと思いました:

薄暗い街

sPrefix = "addr:city"の場合:コンマが表示されるまで、 "addr:city"以降のすべてを返します

それを解決する方法のアイデア。残念ながらあまり経験がありません。

ありがとう、

ウリ!

これがスクリーンショットです

スクリーンショット

4

3 に答える 3

1

Pythonのcsvモジュールを見てください。

編集:

Arcmapを使用したことはありませんが、モジュールをインポートできると思います。文字列がかなり規則的である場合は、それなしでデータを解析できます。

例えば。

#test.py

def func(s, srch):
    parts = dict([item.replace('"','').split('=') for item in s.split(',')])
    return parts.get(srch,'')

if __name__ == '__main__':
    tags = '"addr:city"="Bielefeld","addrostcode"="33699","addr:street"="Westerkamp"'
    print func(tags, 'addr:city')

>python test.py
>Bielefeld
于 2012-11-01T13:17:07.250 に答える
0

このようなもの、あなた自身の関数を定義してください:

In [40]: def func(x,item):
    spl=strs.split(",")
    for y in spl:
        if item in y:
            return y.split("=")[-1].strip('"')

   ....:         
   ....:         

In [53]: strs='"addr:city"="Bielefeld","addrostcode"="33699","addr:street"="Westerkamp"'

In [54]: func(strs,"addr:city")
Out[54]: 'Bielefeld'

In [55]: func(strs,"addr:street")
Out[55]: 'Westerkamp'
于 2012-11-01T13:19:10.597 に答える
0

私があなたの質問を読んだとき、あなたは'"addr:city"="Bielefeld","addr:housenumber"="34"'個々の(キー、値)ペアのように見える文字列を抽出したいと思います。これを行う最も簡単な方法は、おそらくcsvリーダー(http://docs.python.org/2/library/csv.html)を使用することです。ユースケースでそれをどのように使用するかを正確に決定する必要がありますが、これが機能する可能性のある一般的な例です。

import csv
for pairs in csv.reader(attribute_list):
    key, value = pair.split('"="')
    print key, value
于 2012-11-01T13:20:03.117 に答える