Aquí está mi código:

def insert_row():
    import fileinput
    import csv
    sk= raw_input("\nWhat SKU would you like to insert?: ")
    pos= int(raw_input("\nAt what row?: "))

    with open("files.csv","rb") as f:
            lines = f.readlines()

    lines.insert(pos, sk)
    with open("files.csv","wb") as f:
            for line in lines:
                f.write(line+'\n')

Conseguí esto con la ayuda de C14l

Pero hay un problema, cuando trato de insertarlo salta líneas, esto es causado por el '\ n', cuando traté de eliminarlo, simplemente se concatenaba con la cadena en la posición. ¿Hay alguna manera de que se inserte correctamente?

Aquí está el resultado con mi código actual insertando "Phillip":

SASA

DA

Phillip
AF

FAF

ANUNCIO

FAF

FAF

Quiero que sea:

SASA
DA
Phillip
AF
FAF
AD
FAF FAF

¿Alguna idea de cómo ejecutar esto sin saltar línea por línea? Experimenté muchas cosas aquí. No puedo averiguar por qué. incluso intenté agregar otro f.write(line+'\n') después del ciclo con la esperanza de que solo agregaría una nueva línea cuando el ciclo haya terminado.

Haciendolo:

for line in lines:
     f.write(line)
     f.write(line+'\n')
0
Rekt 5 mar. 2017 a las 16:20

2 respuestas

La mejor respuesta

Todas las líneas en su archivo tienen una nueva línea. Pero su nueva línea de raw_input no contiene una nueva línea. Con su código, agrega una nueva línea a cada línea. Lo que duplica las líneas nuevas en las líneas existentes y crea las líneas vacías. Intente agregar solo una nueva línea a su nueva línea en: lines.insert(pos, sk + '\n') Y cambie la última línea a: f.write(line)

Eche un vistazo a la documentación de raw_input ():

La función lee una línea desde la entrada, la convierte en una cadena (quitando una nueva línea final) y la devuelve.

0
Eisenaxt 5 mar. 2017 a las 14:31

Encontramos la solución:

sk= raw_input("\nWhat SKU would you like to insert?: ")
pos= int(raw_input("\nAt what row?: "))

with open("files.csv","r") as f:
    lines = f.readlines()

lines.insert(pos, sk + '\n')

with open("files.csv","w") as f:
    for line in lines:
        f.write(line)
0
Rekt 5 mar. 2017 a las 14:17