2016-07-13 2 views
0

ArcGIS 10.2のフィールド計算の式に問題があります。私はすでにPythonでコードを試してみましたが、うまくいきましたが、ArcGISでコードを適用するために必要な小さな変更を加えれば、それはうまく動作しません。Pythonを使用したArcGISのコードブロック式

PGIS_TXTは、次のような文字列です。最初の数字は、その文字列をPython式で抽出したいパーセルの分子です。

これらの数字は、その後、私のコラム flur_zaに保存されている必要があります
PGIS_TXT = ["31\c\u\n\2","22","1","134","23\c\u\n\1"] 


import re 
def getnumerator(PGIS_TXT): 

if (len(PGIS_TXT) > 3): 
    p=map(int, re.findall('\d+', PGIS_TXT)) 
    b=p[:-1] 
    return b 
else: 
    b= int(PGIS_TXT) 
    return b 

flur_za = getnumerator(!PGIS_TXT!) 

結果は次のようになります。

[31, 22, 1, 134, 23] 

私は標準エラー"Error 999999"とメッセージ"The field is not nullable [flur_za]"

を取得コードの何が間違っていますか?

答えて

0

このコードは、私の仕事:

def getnumerator(PGIS_TXT): 

import re 
if len(PGIS_TXT) > 3: 
    p = map(str, re.findall('\d+',PGIS_TXT)) 
    z=p[:1] 
    b=int(''.join(z)) 
else: 
    if len(PGIS_TXT)==3: 
     b=int(PGIS_TXT[:3]) 
    else: 
     if len(PGIS_TXT)==2: 
      b= int(PGIS_TXT[:2]) 
     else: 
      if len(PGIS_TXT)==1: 
       b= int(PGIS_TXT[:1]) 
return b 

を私は問題は最初のif条件の範囲内だったと思います。私はmapメソッドで整数値のリストを取得しますが、整数値が必要でした。 .joinメソッドは、リストを取り除くのを助けました。

関連する問題