フィールド計算で英数字から数字を削除しますか?


9

次の形式の英数字の値を含むフィールドがあります。

A-AA00

時には彼らも

A-AAA0

ArcMap 10のフィールド計算機に配置できるPythonスクリプトが必要です。これにより、少なくとも数字が削除され、アルファベット文字とハイフンが再トレーニングされます。そのため、たとえば、これ:

A-AA0

これになる:

A-AA

また、数値文字を別のフィールドの数値文字に置き換えたいと思います。このStack Exchangeエントリはこの問題に対処していますが、文字列には数値の前にスペースがあり、これを分割およびインデックス付けに使用できます...文字列はそれほど簡単に作成されていません。

回答:


17

正規表現を使用します。電卓のコードブロックセクションに以下を入力すると、すべての桁が削除された文字列が返されます。

import re
def strip_digits(s):
    return re.sub("\d+", "", s)

次に、計算ボックスから次のように呼び出すことができます。

strip_digits(!column_name!)

文字を置き換える場合は、置き換える文字の関数に別の引数を追加し、空の文字列の代わりにそれを置きます。


4

ストリップを使うだけ

s="AAAA-000"
print s.strip("0, 1,2,3,etc")
AAAA-

4

これはマッピングセンター(arcgis.com)でも見つかりました。
リソースセンターのテキスト管理ツール

9.2 / 9.3用に書かれた古いコードです。10.xの適切性について不明

  1. バッチ検索と置換:このツールは、テキストフィールドの文字列に、検索/置換テーブルで指定された置換文字列を入力します。これは、ラベル文字列を標準化する場合や、標準の略語を導入して適用する場合に役立ちます。
  2. テキストを適切なケースに変換:このツールは、1つのフィールド(すべて大文字またはすべて小文字と見なされる)のテキスト文字列を、別の(新しい)フィールドの適切なケース(大文字と小文字の混在)テキスト文字列に変換します。このツールは、北東のNEなどの一般的な略語を処理するように作成されているため、Neとしては表示されません。
  3. ハイウェイシールドラベルのハイウェイ番号を抽出:高速道路名の数値部分を別のテキストフィールドに追加します。

これらのツールはすべてPythonで作成されており、変更して特定のニーズを満たすことができます。


3

私はこの単純なケースから始めます:

>>> x = "A-AA00"
>>> print x
A-AA00
>>> print x.replace("0","")
A-AA
>>> 

そこから、ArcGIS 10ヘルプのPythonのコードブロックの例のいくつかは、総合的なソリューションへの出発点となるはずです。


1
これの問題は、0以外の数字を処理する簡単な方法がないことだと思います。om_hennersが指摘したように、正規表現が非常に役立つのはそのためです。
nmpeterson 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.