ArcGIS Field CalculatorのPython Parserを使用して二重引用符を検索/置換しますか?


16

フィールド計算機(ArcMap 10.0)を使用して、アドレスフィールド内の二重引用符を削除しようとしています(そこに入れませんでした、信じています)。私は多くの呪文を試してみましたが、計算で地面から降りることさえできません。はい、両方のフィールドは文字列であり、両方とも許容可能な長さです。

この計算: サンプル計算

この結果:

不合格

[結果]ダイアログに次のエラーメッセージが表示されます。

エラーメッセージ

繰り返しますが、そこには入れませんでした。


1
テストで引用符を使用してそれらをコピーしていますが、既に引用符を次のようなもので取り除こうとしましたか!testing![1:len(!testing!)-1]
-Roy

指定したスニペットは、同じメッセージで死にます。
valveLondon

回答:


16

10.0では、Field Calculatorは非常に奇妙です。

しかし、私はそれをうまく機能させることができました。主なアイデアは、フィールド名を一重引用符で囲むことです。

例。フィールドtext1とがあるとしtext2ます。おそらく失敗するtext2!text1!でフィールドを計算するのではなく、これを試してください:'!text1'。ご覧の通り、ここでは一重引用符を使用しています。

それでは、タスクに戻りましょう。事前論理スクリプトコードを使用すると、より明確になります。

def calc(value):
    return value.replace('"', '')

式は次のようになります。

calc('!text1!')

私はそれがあなたのために働くことを望みます。

さらに実験したことはありませんが、このような奇妙な動作は、フィールド計算がArcToolboxツールの呼び出しに変換され、CalculateField_management式がパラメーターとして提供されるために発生すると思います(おそらく、さらに一重引用符または二重引用符で囲まれます)。

更新:

フィールドの値の単一引用符がある場合、私の以前のソリューションは、場合に失敗しますtext1

これで、属性の値の中に文字'"(単一引用符と二重引用符)がある場合の両方で機能するようになりましたtext1

次の式は、元の文字列を返し、両方のタイプの引用符をサポートします。

'''!text1!'''[1:-1]

あなたの仕事のためにそれを拡張することができます(事前論理スクリプトコードなし):

'''!text1!'''[1:-1].replace('"', '')

まあ、あなたは私の希望を上げましたが、それは私にはうまくいきません。'!testing!'
コード

ええと、それは私の10.0sp4で動作しました。あなたのフィールドのどこかに実際に一重引用符があるためかもしれません... PythonスクリプトでUpdateCursorを使用することを検討しましたか?
アレックスマルコフ

2
あのね?あなたは正しい、それは動作します。ウェイクアップジュースを3時にしていませんでした。あなたが勝ちます。
バルブロンドン

一重引用符で問題を解決できました。答えの更新を確認してください。
アレックスマルコフ

事前論理スクリプトコードは、スクリプト内で使用すると
正常に機能しました

10

バージョン10.1を使用していて、使用できる二重引用符のすべてのインスタンスを削除したい場合:

!testing!.replace("\"","")

これが10.1ではなく10.1で機能する理由を誰かが知っていれば、興味があります。

これが私の実行結果です。

ここに画像の説明を入力してください


ここでの手品は何ですか、スクリプトは機能しませんでしたか?
アートワーク21

これは機能しません。あるべきように見えますが、そうではありません。
KiloGeo

あなたのフィールドは両方とも正しいテキストですか?
-TurboGus

@ Gus、Yesフィールドはテキストです。
アートワーク21

2
10.1を使用していません。私は10.0を使用しています-2011
すごい

8

スクリプトを使用しない方法を次に示します。

  1. レイヤーで編集セッションを開始します。
  2. テーブルを開き、フィールド列を強調表示します。
  3. [テーブルオプション]ドロップダウン矢印を選択し、[検索と置換]を選択します。
  4. [置換]タブを選択し"、[ 検索対象:]と入力して、[すべて置換]を選択します([すべて置換]ボタンを2回クリックする必要があります)。

私はその可能性を高く評価していますが、二重引用符を置き換えるだけでなく、スクリプトを使用して作業したいと考えています。
valveLondon

3

ハイブリッドアプローチが私のシステムで機能しました:

'!testing!'.replace("\"","")

2

私はこれをArc内で試したことはありませんが、Python IDEで文字列から二重引用符を削除することができました。

aStr ='"test"'

a1 = aStr.lstrip('"')
a2 = a1.rstrip('"')

print a2

a2は、引用符なしでテストを出力します。


私はこれがあなたの質問の一部を「検索」のヘルプ...ない実現
ティモシー・マイケル

0

こんにちは、このような単一引用符を使用してみてください!test!.replace( '"'、 '')


こんにちは、これは機能しません。
valveLondon

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.