用于检查字符串内部变量是否存在的命令

时间:2015-12-14 19:03:43

标签: python python-3.x telegram telegram-bot

我需要用户输入两个数字来形成一个范围,并在没有输入一个或两个数字或输入一个字母时发出错误消息。 我现在做的是

@bot.message_handler(commands=['set'])
def handle_message(message):
    if (message.text == '/set'):
    bot.send_message(message.chat.id, 'put in a range')
    elif  message.text.split()[1].isdigit() :
        bot.send_message(message.chat.id, "something")
    elif message.text.split()[1].isdigit() == False:
        bot.send_message(message.chat.id, 'Only letters!')

但问题是,如果用户没有在第二个变量中放入任何内容,我会收到语法错误。我尝试使用

except IndexError:
    bot.send_message(message.chat.id, 'Only letters!') 

但是返回一个SyntaxError。 我正在寻找的方法是检查message.text.split()[2]是否存在(有任何值),然后检查它是否是数字。

1 个答案:

答案 0 :(得分:2)

您遇到的第一件事是合法的SyntaxError - 如果没有except,则无法使用try。请参阅下面的用法。

你要遇到的第二件事是IndexError - 如果你在少于两个参数的情况下寻找第二个参数怎么办?

首先要看你跳跃:

if len(message.text.split()) > 1:
    # do check

另一个是捕获TraceBack:

my_messages = [1]
try: 
    my_messages[2]
except IndexError:
    print("length was too short to continue checking!")

如果您正在获取字符串输入,您还应该确保删除额外的空格,因为它可能会让您失望:

message = '1234 '
message.isdigit()
# False!

删除会强制将其作为字符串的空格:

message = message.strip()
message.isdigit()