How to convert Nonetype to int or string?

前端 未结 10 1991
情歌与酒
情歌与酒 2020-11-29 17:23

I\'ve got an Nonetype value x, it\'s generally a number, but could be None. I want to divide it by a number, but Python raises:

<
10条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-29 18:10

    I was having the same problem using the python email functions. Below is the code I was trying to retrieve email subject into a variable. This works fine for most emails and the variable populates. If you receive an email from Yahoo or the like and the sender did no fill out the subject line Yahoo does not create a subject line in the email and you get a NoneType returned from the function. Martineau provided a correct answer as well as Soviut. IMO Soviut's answer is more concise from a programming stand point; not necessarily from a Python one. Here is some code to show the technique:

    import sys, email, email.Utils 
    
    afile = open(sys.argv[1], 'r')    
    m = email.message_from_file(afile)    
    subject = m["subject"]
    
    # Soviut's Concise test for unset variable.
    
    if subject is None:    
         subject = "[NO SUBJECT]"
    
    # Alternative way to test for No Subject created in email (Thanks for NoneThing Yahoo!)
    
    try:    
        if len(subject) == 0:    
            subject = "[NO SUBJECT]"
    
    except TypeError:    
        subject = "[NO SUBJECT]"
    
    print subject
    
    afile.close()
    

提交回复
热议问题