python处理未知数据类型的字符,整型浮点型字符串转换为浮点型数字
def IsNum(str):
"""
只能处理字符串,整型,浮点型返回True
:param str:
:return:
"""
s = str.split('.') # 考虑到浮点型有小数点的情况
if len(s) > 2:
return False
else:
for si in s:
if not si.isdigit():
return False
return True
def DealStrOrNum(value):
if isinstance(value, str): # 判断是字符串
if IsNum(value): # 判断是整型或者浮点型字符串
return float(value) # 转换成浮点型
else:
return value # 字符串,无法转换成浮点型
elif isinstance(value, int) or isinstance(value, float): #如果字符本身就是整型,浮点型,直接返回
return value
zzs102071Jbxx_data_from_tax_office = {'nsrmc': 'xxx有限公司', 'lxdh': '1234567891', 'khyh': '招商银行',
'zjgnsrsbh': '00000000MA000XD94', 'zfzjgxsehj': '142', 'ybxssr': '36.00',
'ybfpse': '0.00', 'jzjtfpbl': '0.000000', 'ysxssr': '35.00', 'ysfpse': '0.00',
'ysjzjtfpbl': '0.000000', 'yydz': '武汉市江岸区',
'fddbrxm': '小明', 'yhzh': '100000000601', 'ytbse': '0.00',
'zjgnsrgdfpbl': '0.100000', 'ybfpbl': '0.550000', 'jzjtxssr': '0.00',
'jzjtfpse': '0.00', 'ysfpbl': '0.550000', 'ysjzjtxssr': '0.00',
'ysjzjtfpse': '0.00', 'sbbId': 10025, 'nsrsbh': '914209990000XD94'}
print(zzs102071Jbxx_data_from_tax_office)
for item in zzs102071Jbxx_data_from_tax_office:
zzs102071Jbxx_data_from_tax_office[item] = DealStrOrNum(zzs102071Jbxx_data_from_tax_office[item])
print(zzs102071Jbxx_data_from_tax_office)
需要注意的是,以上的代码没有考虑到负数的情况,以下的代码可以判断整数,浮点数
def is_number(num):
s = str(num)
if s.count('.') == 1: # 小数
new_s = s.split('.')
left_num = new_s[0]
right_num = new_s[1]
if right_num.isdigit():
if left_num.isdigit():
return True
elif left_num.count('-') == 1 and left_num.startswith('-'): # 负小数
tmp_num = left_num.split('-')[-1]
if tmp_num.isdigit():
return True
elif s.count(".") == 0: # 整数
if s.isdigit():
return True
elif s.count('-') == 1 and s.startswith('-'): # 负整数
ss = s.split('-')[-1]
if ss.isdigit():
return True
return False