如果位置可以更改,如何在字符串中选择整数?

时间:2018-12-16 12:35:50

标签: python string indexing numbers bots

现在,我正在为自己的服务器创建Discord机器人。我正在尝试为其提供随机数功能,因此在不和谐聊天中,您可以输入

  

!rng 0   6

然后Bot将返回0到6之间的随机数。

这适用于此代码

@client.event
async def on_message(message):
    if message.content.startswith('!rng'):
        highest = int(message.content[-1])
        lowest = int(message.content[-3])
        random = str(randint(lowest, highest))
        await message.channel.send("I choose " + random)

但是,一旦选择的数字大于9(大于1位数字),它就会开始失败,因为我的索引仅设计用于1位数字。有什么办法可以使它与更大的数字一起工作?因此,您可以说一个介于172和18361之间的随机数,或其他任何数字。用某种方法可以挑选出整个数字。

我的想法是做一些for循环,检查下一个字符串字母是否为数字,然后将其附加到数字上,以便最后得到整个数字,但是我敢打赌,有一些更好的方法可以减少代码和麻烦。

2 个答案:

答案 0 :(得分:1)

使用split分隔数字:

lowest, highest = map(int, message.split()[1:])

答案 1 :(得分:0)

您可以使用正则表达式:

import re
text = '!rng 0 6'
results = re.findall('\d+', text)
print(results)

将打印['0', '6'],您可以将其与map(int,results)组合以获得整数(生成器)