Anexión es irrelevante para el problema; Observe que las primeras dos filas (las del archivo original) también tienen doble espacio.
El problema real es que ha abierto su archivo en el modo de texto.
CSV es un formato binario, lo creas o no. El módulo csv está escribiendo el "lineterminator" ("rowseparator") engañosamente nombrado como \r\n
como se esperaba, pero luego el tiempo de ejecución de Windows C entra en acción y reemplaza el \n
con \r\n
para que tenga \r\r\n
entre las filas. El archivo csv con Excel confunde
Siempre abra sus archivos CSV en modo binario ('rb', 'wb', 'ab'), ya sea que esté operando en Windows o no. De esta forma, obtendrá el esperado rowseparator (CR LF) incluso en * x recuadros, tu código será portable, y cualquier avance de línea incrustado en tus datos no se cambiará en otra cosa (por escrito) ni provocará dramas (en la entrada, siempre y cuando estén citados correctamente).
Oth er problemas:
(1) No coloque sus datos en su directorio raíz (C:\
). Windows heredó un sistema de archivos jerárquico de MS-DOS en la década de 1980. Úselo.
(2) Si debe incrustar nombres de archivos con cable en el código, use cadenas sin formato r"c:\test.csv"
... si tuviera "c:\test.csv"
, la '\ t' se interpretaría como un carácter TAB; problemas similares con \r
y \n
(3) Los ejemplos en el manual de Python se alinean más hacia la brevedad que el código robusto.
No haga esto:
w = csv.writer(open('foo.csv', 'wb'))
Haga lo siguiente:
f = open('foo.csv', 'wb')
w = csv.writer(f)
Luego, cuando haya terminado, usted tiene f
disponibles para que pueda hacer f.close()
para asegurar que sus contenidos son archivos enrojecido en el disco. Aún mejor: lee la nueva declaración with
.
¿Cuál es la pregunta/problema? No está claro para mí ... – poke
"Recibo datos cada dos filas. ¿Cómo lo soluciono?" ¿Qué significa exactamente esto? ¿Se puede pegar la salida de muestra frente a la salida de muestra deseada? – Chris
@poke, @Chris: El OP está insertando una fila vacía inesperada después de cada fila de datos esperados. –