我正在尝试编写一个将字符串转换为整数的函数,但有一个例外是捕获任何不是数字的东西并返回一个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,但我无法尝试使用它。
如何写这个,以便如果字符串确实表示一个正整数,那么返回该整数?
答案 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
此正则表达式与常规或科学记数法显示的所有(正)整数相匹配。