python自带的int函数在值中出现字符串的情况下会出现错误python>>>int('232d')Traceback(mostrecentcalllast):File"",line1,inValueError:invalidliteralforint()withbase10:'232d'而js中parseInt则不会出现类似问题javascriptvarnum=parseInt('2323d')num==2323那么,如何用python实现一个类似js的parseInt函数(尽量不用正则)下面是我实现的一个,但是有没有更好的方法pythondefsafe_int(num):try:returnint(num)exceptValueError:result=[]forcinnum:ifnot('0'
2 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
这样行吗defsafe_int(num):assertisinstance(num,basestring)try:returnint(num)exceptValueError:result="0"forcinnum:ifcnotinstring.digits:breakresult+=creturnint(result)
慕田峪4524236
TA贡献1875条经验 获得超5个赞
pythonfromfunctoolsimportreducedefparseInt(s):returnreduce(lambdax,y:x*10+y,map(int,filter(lambdac:c>='0'andc<='9',s)))针对谢谢,但是'234jdsf23232ks'会转换为23423232,这不是想要的结果这一情况,再看了下原问题,其实原问题关键之处即在于剥离出这样一个简单问题“查找到字符串中第一个不为数字的字符的位置”。pythondeffind(s):foriinrange(len(s)):ifnot'0'<=s[i]<='9':returnireturnlen(s)找到这个位置后,然后用切片函数和int方法就可以完成任务了。pythons='234jdsf23232ks'idx=find(s)int(s[0:idx])思路跟题主的差不多^-^
添加回答
举报
0/150
提交
取消