异常处理,尝试将字符串转换为整数的函数



我正在尝试编写一个将字符串转换为整数的函数,但捕获任何不是数字的内容并返回 SyntaxError 除外。这里的尝试应该采用一个字符串,如果字符串中的所有字符都是数字,则返回一个整数。(sti) 的示例值为 12a34。

def string2int(sti):
    try:
        int(float(sti))
        if sti.isdigit():
            return sti
    except Exception, e:
        raise SyntaxError('not an integer')

尝试在 python 可视化工具中解决它会在第 4 行给我一个属性错误:属性错误:"浮点"对象没有属性"isdigit"

我可以使用一个all_digits函数,它接受一个字符串,如果字符串的所有字符都是数字,则返回 True,否则返回 False,但我也无法尝试使用它。

我该怎么写,以便如果字符串确实表示一个正整数,则返回该整数?

def string2int(sti):
    try:
        return int(sti)
    except ValueError:
        raise SyntaxError('not an integer')

或:

def string2int(sti):
    if sti.isdigit():
        return int(sti)
    else:
        raise SyntaxError('not an integer')

在你的函数中,如果sti是一个整数,这应该很简单,但只适用于像123这样的常规整数,甚至不是"+1"或"1e2":

def string2int(sti):
    try:
        if sti.isdigit():
            return sti

因此,您可以使用正则表达式:

import re
matchInt = re.match("^+?[0-9]+([eE][0-9]+)?$",sti)
if matchInt:
    return sti

此正则表达式与定期显示或以科学记数法显示的所有(正)整数匹配。

相关内容

  • 没有找到相关文章

最新更新