2010-07-07 3 views
7

Как удалить символ ^M из текстового файла (в конце строки) в сценарии Python?Как удалить^M

Я сделал следующее, и в каждом перерыве есть ^M.

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

вы можете разместить больше от вашего кода ?. Dont't знает, где^M приходит. символа новой строки сделать и «\ п», не «^ M» Remeber для закрытия "file.close()" Не использовать файл зарезервированное слово в python использовать my_file или что-то в этом роде. – snippsat

+0

@snippsat^M - это escape-символ терминала, который записывается как «\ n» в синтаксисе C –

+3

@Pete:^M is '\ r' –

ответ

8

Если вы пишете файл, вы должны указать open(filename, "wb"). Таким образом, вы будете писать в двоичном режиме, и Python не будет пытаться определить правильные строки новой строки для вашей системы.

+0

Спасибо за ваш ответ, но я пытаюсь написать «что-то» в файл, и кажется, что «универсальный режим новой строки» можно использовать только с 'rU', если я не ошибаюсь. В любом случае, это не работает для меня. – DGT

4

Python может открывать файл в двоичном режиме или в текстовом режиме. Текст по умолчанию, поэтому режим «w» означает запись в текстовом режиме. В текстовом режиме Python будет настраивать окончание строки для платформы, на которой вы находитесь. Это означает, что в Windows этот код:

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

приведет к текстовому файлу, содержащему «Hello \ r \ n».

Вы можете открыть файл в двоичном режиме с использованием «Ъ» в режиме:

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

результаты в текстовый файл, содержащий «Hello \ N».

+0

Собственно, это «что-то» происходит из html-формы textarea, где я копирую и вставляю «что-то». Затем скрипт получает значение: something = form["some_name"].value DGT

2

dos2unix filename.py

преобразовать разрывы строк в стиле UNIX.

1

string.replace ('\ r', '') работал для меня.

Уродливый, но ни г +, ни г + б, ни больше ничего не работал (для меня, конечно) :(

0

Для переносимости, вы можете попробовать следующее

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

запустить autopep8 на файл

> apt-get install python-autopep8 

> autopep8 python_file_name > new_python_file_name.py 
+0

Это не то, о чем он просит. Это также, вероятно, будет иметь и другие побочные эффекты; ответьте на вопрос, заданный с детальными и реальными решениями. – kevr