标签:10 power Python ret else 19 num sss value
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**(幂*幂的符号))
标签:10,power,Python,ret,else,19,num,sss,value 来源: https://blog.csdn.net/qq_15019579/article/details/120845479
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。