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.这种情况,最后一位是小数点,我们也要把他去掉。

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

你可能感兴趣的:(python,java,开发语言)