フィールド計算機(ArcMap 10.0)を使用して、アドレスフィールド内の二重引用符を削除しようとしています(そこに入れませんでした、信じています)。私は多くの呪文を試してみましたが、計算で地面から降りることさえできません。はい、両方のフィールドは文字列であり、両方とも許容可能な長さです。
この計算:
この結果:
[結果]ダイアログに次のエラーメッセージが表示されます。
繰り返しますが、そこには入れませんでした。
フィールド計算機(ArcMap 10.0)を使用して、アドレスフィールド内の二重引用符を削除しようとしています(そこに入れませんでした、信じています)。私は多くの呪文を試してみましたが、計算で地面から降りることさえできません。はい、両方のフィールドは文字列であり、両方とも許容可能な長さです。
この計算:
この結果:
[結果]ダイアログに次のエラーメッセージが表示されます。
繰り返しますが、そこには入れませんでした。
回答:
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.1を使用していて、使用できる二重引用符のすべてのインスタンスを削除したい場合:
!testing!.replace("\"","")
これが10.1ではなく10.1で機能する理由を誰かが知っていれば、興味があります。
これが私の実行結果です。
スクリプトを使用しない方法を次に示します。
"
、[ 検索対象:]と入力して、[すべて置換]を選択します([すべて置換]ボタンを2回クリックする必要があります)。私はこれをArc内で試したことはありませんが、Python IDEで文字列から二重引用符を削除することができました。
aStr ='"test"'
a1 = aStr.lstrip('"')
a2 = a1.rstrip('"')
print a2
a2は、引用符なしでテストを出力します。
!testing![1:len(!testing!)-1]