¿Cómo puedo eliminar todos los caracteres adicionales de la lista de cadenas para convertir a ints?

Hola, soy bastante nuevo en progtwigción y Python, y esta es mi primera publicación, así que me disculpo por cualquier mala forma.

Estoy raspando los recuentos de descargas de un sitio web y recibo el siguiente error al intentar convertir la lista de números de cadena en enteros para obtener la sum. ValueError: literal no válido para int () con base 10: ‘1,015’

He intentado .replace () pero no parece estar haciendo nada.

Y trató de construir una sentencia if para eliminar las comas de cualquier cadena que las contenga: ¿Python tiene una cadena que contiene el método de subcadena?

Aquí está mi código:

downloadCount = pageHTML.xpath('//li[@class="download"]/text()') downloadCount_clean = [] for download in downloadCount: downloadCount_clean.append(str.strip(download)) for item in downloadCount_clean: if "," in item: item.replace(",", "") print(downloadCount_clean) downloadCount_clean = map(int, downloadCount_clean) total = sum(downloadCount_clean) 

Las cadenas no son mutables en Python. Entonces, cuando llama a item.replace(",", "") , el método devuelve lo que desea, pero no se almacena en ningún lugar (por lo tanto, no está en el item ).

EDITAR:

Sugiero esto:

 for i in range(len(downloadCount_clean)): if "," in downloadCount_clean[i]: downloadCount_clean[i] = downloadCount_clean[i].replace(",", "") 

SEGUNDA EDICIÓN:

Para un poco más de sencillez y / o elegancia:

 for index,value in enumerate(downloadCount_clean): downloadCount_clean[index] = int(value.replace(",", "")) 

Por simplicidad:

 >>> aList = ["abc", "42", "1,423", "def"] >>> bList = [] >>> for i in aList: ... bList.append(i.replace(',','')) ... >>> bList ['abc', '42', '1423', 'def'] 

o trabajando solo con una sola lista:

 >>> aList = ["abc", "42", "1,423", "def"] >>> for i, x in enumerate(aList): ... aList[i]=(x.replace(',','')) ... >>> aList ['abc', '42', '1423', 'def'] 

No estoy seguro de si esta rompe alguna regla de Python o no 🙂