2010-07-07 19 views
7

¿Cómo puedo eliminar el carácter ^M de un archivo de texto (al final de la línea) en un script de Python?Cómo eliminar^M

Hice lo siguiente, y hay ^M en cada línea de salto.

file = open(filename, "w") 
file.write(something) 
+0

se puede publicar más fuera de su código ?. Dont't sabe donde M^viene. carácter de nueva línea y hacer "\ n" no "^ M" Recuerda cerrar "file.close()" No usar archivo es una palabra reservada en python usa my_file o algo así. – snippsat

+0

@snippsat^M es el escape del carácter del terminal que está escrito como '\ n' en la sintaxis C –

+3

@Pete:^M es '\ r' –

Respuesta

8

Si está escribiendo el archivo, debe especificar open(filename, "wb"). De esa forma, escribirás en modo binario y Python no intentará determinar las líneas nuevas correctas para el sistema en el que te encuentras.

+0

Gracias por tu respuesta, pero estoy tratando de escribir 'algo' en 'archivo' y parece que 'modo de nueva línea universal' solo puede usarse con 'rU', si no me equivoco. No funciona para mí, de todos modos. – DGT

4

Python puede abrir un archivo en modo binario o en modo de texto. El texto es el predeterminado, por lo que un modo de "w" significa escribir en modo texto. En modo texto, Python ajustará los finales de línea para la plataforma en la que se encuentre. Esto significa que en Windows, este código:

f = open("foo.txt", "w") 
f.write("Hello\n") 

dará como resultado un archivo de texto que contiene "Hola \ r \ n".

Puede abrir el archivo en modo binario mediante el uso de "b" en el modo:

f = open("foo.txt", "wb") 
f.write("Hello\n") 

resultados en un archivo de texto que contiene "Hola \ n".

+0

En realidad, ese 'algo' viene de html form textarea, donde copio y pego 'algo'. La secuencia de comandos obtiene el valor: something = form["some_name"].value DGT

2

dos2unix filename.py

para convertir los saltos de línea de estilo UNIX.

1

string.replace ('\ r', '') funcionó para mí.

feo, pero tampoco r + ni R + B ni nada funcionó ELSE (para mí, claro) :(

0

Por su portabilidad, puede intentar lo siguiente autopep8

import os 
file = open(filename, "w") 
file.write(something.replace('\r\n', os.linesep)) 
-1

corrida en el archivo

> apt-get install python-autopep8 

> autopep8 python_file_name > new_python_file_name.py 
+0

Esto no es lo que está preguntando. Esto también probablemente tenga otros efectos secundarios; responda la pregunta con detalles y soluciones reales. – kevr

Cuestiones relacionadas