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

时间:2014-04-05 11:22:56

标签: python string function exception integer

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

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

尝试在python可视化工具中解决它在第4行给出了属性错误: AttributeError:'float'对象没有属性'isdigit'

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

如何写这个,以便如果字符串确实表示一个正整数,那么返回该整数?

2 个答案:

答案 0 :(得分:1)

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')

答案 1 :(得分:0)

在你的函数中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

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