我正在尝试编写一个将字符串转换为整数的函数,但捕获任何不是数字的内容并返回 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
此正则表达式与定期显示或以科学记数法显示的所有(正)整数匹配。