↑↑↑关注后"星标"简说Python人人都可以简单入门Python、爬虫、数据分析简说Python严选
来源:简说Python 作者:老表
One old watch, like brief python大家好,我是老表~Python知识点系列,学习了记得点赞、留言、转发,三连哦~字符串转整数需注意
问题源自我做阿里云天池Docker练习赛时(点击查看),读取num_list.csv数据后发现列表里的每个元素是字符串,所以需要先转化为整数,然后才能进行求和和排序,提交代码时遇到下面问题:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 145 100 45 100 100 4 9 0:00:11 0:00:10 0:00:01 0
Traceback (most recent call last):
File "hello_world.py", line 14, in
tc_list = [int(i) for i in tc_list]
File "hello_world.py", line 14, in
tc_list = [int(i) for i in tc_list]
ValueError: invalid literal for int() with base 10: ''
{"code":"SUCCESS","data":{"returnCode":true}}
倒数第二行是关键,意思是说''
不能被转化为整数数据。
ValueError: invalid literal for int() with base 10: ''
所以在对列表进行处理时,需要提前去掉空字符串或者非纯数字组成的字符串,处理方法如下:
# 如果确定数据为整数,可以直接用isdigit()函数
# 1、数据为整数,不带正负号
str1.isdigit()
# 2、数据为整数,带正负号
if str1[0] in ['-', '+']:
if str1[1:].isdigit():
return int(str1)
# 3、如果为浮点型,可以写一个函数
def is_number(str1):
try:
float(str1) # 直接转化,为float,看报不报错
except ValueError: # 如果报错,说明不是数值类型
return False
return True
list1 = ['1', '2', '']
# 转化为数值类型,并去除非数值类型字符串
list2 = [float(i) for i in list1 if is_number(i)]
在Docker入门赛事中,由于知道数据表中的数据都为整数,所以可以直接这样处理:
tc_list = [int(i) for i in tc_list if i != '']
简说Java
长按扫码关注,一起学Python------------------如果觉得文章有点用的话,请毫不留情地素质三连吧,分享、点赞、在看、收藏,我不挑,因为这将是我写作更多优质文章的最强动力。