为了账号安全,请及时绑定邮箱和手机立即绑定

Python 字符串转数字

Python 字符串转数字

慕妹3242003 2019-04-07 11:19:07
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 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

这样行吗
defsafe_int(num):
assertisinstance(num,basestring)
try:
returnint(num)
exceptValueError:
result="0"
forcinnum:
ifcnotinstring.digits:
break
result+=c
returnint(result)
                            
查看完整回答
反对 回复 2019-04-07
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

pythonfromfunctoolsimportreduce
defparseInt(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':
returni
returnlen(s)
找到这个位置后,然后用切片函数和int方法就可以完成任务了。
pythons='234jdsf23232ks'
idx=find(s)
int(s[0:idx])
思路跟题主的差不多^-^
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号