我是靠谱客的博主 雪白黄蜂,最近开发中收集的这篇文章主要介绍Python 提取字符串中第一个数字 2021-10-19,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python 提取字符串中第一个数字

#函数功能: 提取字符串中第一个数字,支持科学计数法. 如果字符串中不包含数字则返回0
def getNumFromString(sss):
	slen = len(sss)
	ret_value = 0 #返回值
	sflag = 0 #标记是否遇到第一个数字字符 0-未遇到 1-已遇到
	zflag = 1 #数字整数部分标记  默认1-整数
	pnflag = 1 #正负号标记   默认1-正数
	scientificEnumerationFlag = 0 #科学计数法标记
	cnt = 1 #小数部分长度计数
	power_num = 0 #幂
	power_pnFlag = 1
	#print("字符串长度=%s"%slen)
	for i in range(slen):
		if sss[i].isdigit():
			sflag = 1
			if scientificEnumerationFlag:
				power_num = power_num*10 + int(sss[i])
				#print("current step power_num=%s"%power_num)
			else:
				if zflag == 1:
					ret_value = ret_value*10 + int(sss[i])
					#print(ret_value)
				else:	
					divnum = 10**cnt
					ret_value = ret_value + float(sss[i])/(divnum)
					#print("div_num=%s, current step ret_value=%s"%(divnum,ret_value))
					cnt+=1
		else:
			if sflag == 1:
				if sss[i] == '.':
					zflag = 0
				elif sss[i] == 'e' and (sss[i+1] == '+' or sss[i+1] == '-'):
					scientificEnumerationFlag = 1 #开启科学计数法
					if(sss[i+1] == '+'):
						power_pnFlag = 1
					else:
						power_pnFlag = -1
					#print("幂的符号=%s"%power_pnFlag)
				else:
					if sss[i-1] == 'e' and (sss[i] == '+' or sss[i] == '-'):
						continue
					else:
						#print("-------------break------------")
						break
			else:
				if sss[i] == '-':
					pnflag = -1
	return pnflag*ret_value*(10**(power_num*power_pnFlag)) #符号*返回值*(10**(幂*幂的符号))

最后

以上就是雪白黄蜂为你收集整理的Python 提取字符串中第一个数字 2021-10-19的全部内容,希望文章能够帮你解决Python 提取字符串中第一个数字 2021-10-19所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部