1

Having trouble here: I'm trying to use python to write selective label expressions. I have several concentrations and depending on its "_Ex" number I either want it labeled red, not red, or not labeled at all. I have started with just one trying to set it to red. when i put this into the lable expression it says line one Findlabel not defined.

Any help would be appreciated. -Acrain (Indentations are not showing up correctly here, but I don't think thats my problem)

def FindLabel ([cis12DCE] , [cis12DCE_Ex]):

if short ( [cis12DCE_Ex] ) = 1:
    return "<clr red = "255">"+"cis-1,2-Dichloroethylene  "+[cis12DCE]+"</clr>
else:   
    return "cis-1,2-Dichloroethylene  "+[cis12DCE]

enter image description here

1
  • I edited my answer. See if that helps. Commented May 6, 2013 at 15:48

3 Answers 3

2

I think there are a couple issues.

  1. You seem to be having a problem with indentations and extra spacing between your def line and your if statement. The if statement needs to be on the next line.
  2. I think you are embedding a series of double quotes inside each other.

Edit - Change expression to double == sign, HT @Hotpepper

Edit 2 - I am including a screenshot of how the expression should be entered in the expression window. In addition, based on the error, I think you should simply try casting the field back to an integer int instead of using short, as I'm not sure that is supported.

For reference, here is the relevant ESRI Help document: Building Label Expressions

Try:

def FindLabel ([cis12DCE],[cis12DCE_Ex]):
  if int([cis12DCE_Ex]) == 1:
    return "<clr red = '255'>"+"cis-1,2-Dichloroethylene  "+[cis12DCE]+"</clr>"
  else:   
    return "cis-1,2-Dichloroethylene  "+[cis12DCE]

enter image description here

6
  • I appreciate your help, I made your changes but am still getting an error. Is there a specific way to enter/copy the code into the parser?
    – ACrain
    Commented May 6, 2013 at 15:31
  • I have added the error to my main question
    – ACrain
    Commented May 6, 2013 at 15:40
  • Fantastic thank you soooo much. Works perfectly I can build off this. Thanks again you really helped me out. -Adam
    – ACrain
    Commented May 6, 2013 at 16:00
  • Glad that I could help. I would appreciate it if you would mark this answer as accepted. This will help other people who are searching for something similar. Commented May 6, 2013 at 16:10
  • @ACrain - Just wondering why you switched the accepted label to the other answer. I could understand if that was the only issue with the expression, but I thought there were a number of factors I helped you out with. Glad to help regardless, and hope you get your problem solved. Commented May 6, 2013 at 17:38
0

It looks like your missing an equals sign in your if statement if short ( [cis12DCE_Ex] ) = 1: should be
if short ( [cis12DCE_Ex] ) == 1:

0

Try this:

def FindLabel ([cis12DCE],[cis12DCE_Ex]):
  if int([cis12DCE_Ex]) == 1:
    return "<clr red = '255'>"+"cis-1,2-Dichloroethylene  "+str([cis12DCE])+"</clr>"
  else:   
    return "cis-1,2-Dichloroethylene  "+str([cis12DCE])

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.