Python提取字符串中数字(非正则提取)

今天遇到了一个题目记录一下,提取字符串中整数和浮点数。

下方是我的代码

# 提取字符串中的整数或者浮点数
s = input()
res = []
count = 0
for i in range(len(s)):
    # 避免下次从s[i+1]继续循环,应从s[i+count]开始循环
    if s[i] in '0123456789' and (i > count or i == 0):
        d = ''
        # 判断s[i]后面是否有数字若有则加入s[i],然后将count赋值,避免下次从s[i+1]继续循环,应从s[i+count]开始循环
        count1 = 0
        for j in range(i + 1, len(s)):
            # 过滤结果中。出现超过1次以上的字符串
            if s[j] == '.' and d.count('.') == 1:
                break
            else:
                if s[j] in '0123456789.':
                    d += s[j]
                    count = j
                else:
                    break
        res.append(s[i] + d)
# 过滤结果中含有例如88.的数字,将.去除

for x in range(len(res)):
    if res[x][-1] == '.':
        res[x] = res[x][:-1]
print(','.join(res))

核心思路就是,我们遍历字符串过程中,如果遇到数字就要判断他接下来遇到的是不是数字,所以会从当前遇到数字索引继续开始遍历,直到字符串结束

但第二次遍历中,中间有小数点的我们也要判断,因为小数也是数字。

但是我们不能一直加小数点,如果我们再次此次遍历再遇到小数点并且字符串里小数点数超过1我们就要退出子循环,因为这样才能保证我们的小数是正常的,不然会出现88....888这种情况。

最后我们得到的列表中包含了我们所有的数字,但是还会有一种情况,那就是88.这种情况,最后一位是小数点,我们也要把他去掉。

这样我们就得到了完成数字啦

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值