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')
2 respuestas
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.
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)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.