Python - ValueError: invalid literal for int() with base 10: ''

匿名 (未验证) 提交于 2019-12-03 00:56:02

问题:

Help, I keep getting ValueError: invalid literal for int() with base 10: '' when I try to extract an integer from a string!

from string import capwords import sys,os import re  def parseint(List):     newlist = [i for i in List if isinstance(i, int)]     return newlist def getint(string):     number = [int(x) for x in string.split("-")]     return number  file=open('./Class 1/usr_score.data','r') text=file.read()  def get_num(x):     return int(''.join(ele for ele in x if ele.isdigit()))  split = text.split(",")  split.sort(key = lambda k : k.lower()) for i in split:     print(i)  print ('---------------------------------------') list1=[] for i in split:     list1.append(str(i))  num_list1=[]  for i in list1:     ints = re.findall(r'\b\d+\b', i)      #ints = getint(i)[0]     for i in ints:         int1=i     num_list1.append(i)      #num_list1 = parseint(list1)  num_list=num_list1   for i in num_list:     print(i) 

The file usr_score.data contains:

user-1,aaa-1,usr-3,aaa-4, 

What my code is is that it contains scores for a game and I want my program to sort them into alphabetical order. Can someone please fix my problem?

Note: Some of the code in the program has not been used.

回答1:

Your input data has a ',' at the end, which causes split() to generate an empty string in addition to the scores:

['user-1', 'aaa-1', 'usr-3', 'aaa-4', ''] 

int('') doesn't work; you should either remove that empty string, or deal with it.



回答2:

int() can't take an empty string, that's an invalid parameter for it. You'll need to test for if a string is empty when getting it as an int. You can do that in a list comprehension like this:

[int(x) if not (x.isspace() or x == '') else 0 for x in string.split("-")] 

You can replace 0 with None or some other result if you'd prefer, but this basically always checks that a string isn't just whitespace characters using the string.isspace() function and also makes sure x isn't an empty string.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!