ArcGIS Python标签表达式错误

0 投票
1 回答
960 浏览
提问于 2025-04-18 08:45

我最近开始学习Python,并用它在ArcMap中创建标签表达式。不过今天遇到了一个我搞不懂的错误(看起来应该很简单)。当我尝试创建以下表达式时:

def FindLabel ( [FacilityName] ):
  S = [FacilityName] 
  S = S.upper()
  return S

我收到了如下错误信息:

Error 0 on line 0.
Error running expression:  FindLabel(ESRIExpressionArg0)
Traceback (most recent call last):
 File "<expression>", line 1, in <module>
 File "<string>", line 3, in FindLabel
AttributeError: 'NoneType' object has no attribute 'upper'.

[FacilityName]是一个有特定值的字段,并且允许有空值。我想我明白了,'NoneType'意味着在尝试返回之前,[FacilityName]被赋了一个空值,但我不知道该怎么解决这个问题。

谢谢,

Ethan

1 个回答

0

我很确定所有的值都是以字符串的形式返回的,但如果遇到空值,它可能会返回None,这就能解释你遇到的错误。

你可以在你的函数里使用try..except块,或者写一个条件语句来忽略None值。

下面是使用try..except的例子:

def FindLabel ( [FacilityName] ):
    try:
        S = [FacilityName] 
        S = S.upper()
        return S
    except AttributeError:
        pass

撰写回答