基于Python的ArcGIS代码块表达

2024-09-24 02:27:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我对ArcGIS 10.2中的场计算表达式有问题。我已经尝试了Python中的代码,结果成功了,但是由于在ArcGIS中应用代码所做的一些小改动,它无法工作。你知道吗

PGIS_TXT是一列字符串,如下所示,第一个数字是一个包的分子,我想用Python表达式从该字符串中提取这个包。你知道吗

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列中:

flur_za = getnumerator(!PGIS_TXT!)

结果应该是:

[31, 22, 1, 134, 23]

我得到一个标准错误"Error 999999"和消息"The field is not nullable [flur_za]"

代码有什么问题?你知道吗


Tags: 字符串代码importretxtreturn表达式数字
1条回答
网友
1楼 · 发布于 2024-09-24 02:27:18

这个代码对我有用:

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方法有助于摆脱列表。你知道吗

相关问题 更多 >