Python – ValueError: literal no válido para int () con base 10: ”

Ayuda, sigo recibiendo ValueError: literal no válido para int () con base 10: ” cuando bash extraer un entero de una cadena.

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) 

El archivo usr_score.data contiene:

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

Mi código es que contiene puntajes para un juego y quiero que mi progtwig los clasifique en orden alfabético. ¿Alguien por favor puede solucionar mi problema?

Nota: parte del código del progtwig no se ha utilizado.

Sus datos de entrada tienen un ‘,’ al final, lo que hace que split () genere una cadena vacía además de las puntuaciones:

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

int('') no funciona; Debes quitar esa cadena vacía o lidiar con ella.

int () no puede tomar una cadena vacía, eso es un parámetro no válido para ella. Tendrá que comprobar si una cadena está vacía al obtenerla como un int. Puedes hacer eso en una lista de comprensión como esta:

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

Si lo prefiere, puede reemplazar 0 por Ninguno o algún otro resultado, pero esto básicamente siempre verifica que una cadena no sea solo caracteres de espacio en blanco usando la función string.isspace () y también se asegura de que x no sea una cadena vacía.