Tengo algunos datos generados en una lista. He creado un archivo csv y agrega datos en el archivo csv. Pero necesito almacenar los datos como un entero / cadena, no como una lista. Mi código está abajo:

VALUE = list(map(int, VALUE))
print(name, VALUE)
with open("data.csv", "a") as out_file:
        out_string =  ""
        out_string +=  "" + name
        out_string +=  "," + str(VALUE)
        out_string += "\n"
        out_file.write(out_string)

El archivo de salida es: ingrese la descripción de la imagen aquí

Necesito eliminar los [ y ] generados en las columnas 2 y 17. No estoy seguro de cómo hacerlo.

2
Krupali Mistry 3 oct. 2019 a las 11:42

3 respuestas

La mejor respuesta

Está imprimiendo una serie de enteros, que se ve así:

>>> x = [1,2,3]
>>> print(str(x))
[1, 2, 3]
>>>

Los corchetes son la forma en que Python imprime una matriz. Para imprimirlos como líneas CSV, convierta los elementos en cadenas y únalas con una coma:

out_string +=  "," + ",".join([str(i) for i in VALUE])
1
Andomar 3 oct. 2019 a las 12:37

El tipo de datos de su out_string es la lista en su caso y le da una lista de la lista. Para convertir puede usar unirse que convertirá el tipo de datos en str y concatenará los elementos de la lista en su caso ", ".

VALUE = list(map(int, VALUE))
print(name, VALUE)
with open("data.csv", "a") as out_file:
    out_string =  ""
    out_string +=  "" + name
    out_string +=  ",".join(VALUE)
    out_string += "\n"
    out_file.write(out_string)`

Supongo que ahora te dará el resultado deseado.

0
flaschbier 3 oct. 2019 a las 12:56

Cuando VALUE (¿por qué mayúsculas, no es una constante?) Es un list con dos elementos de tipo int y valores 153 y 42, {{X5 }} será [153,42]. Cuando desee que la salida sea 153,42, puede usar ','.join(VALUE) que concatenará los elementos de la lista, separados por el str en el que llama al método join, En este caso la coma.

Sin embargo, al escribir archivos .csv, es posible que también desee considerar usar el csv módulo de la biblioteca estándar de Python.

1
flaschbier 3 oct. 2019 a las 12:38
58215370