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

Python 字符串转数字

Python 字符串转数字

芜湖不芜 2019-04-16 17:05:35
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:
break
result+=c
returnint(result)
                            
查看完整回答
反对 回复 2019-04-16
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

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-16
  • 2 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信