2010-07-07 16 views
7

Jak usunąć znak ^M z pliku tekstowego (na końcu wiersza) w skrypcie w języku Python?Jak usunąć^M

Wykonałem następujące czynności i są ^M dla każdego podziału linii.

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

można dodawać więcej off kodzie ?. Dont't wiedzieć gdzie^M pochodzi. Nowa postać linia zrobić i "\ n" nie "^ M" Pamiętaj, aby zamknąć "file.close()" Nie używaj pliku jest zastrzeżonym słowem w pythonu użyj my_file lub coś podobnego. – snippsat

+0

@snippsat^M jest znakiem końcowym, który jest zapisany jako '\ n' w składni C. –

+3

@Pete:^M jest '\ r' –

Odpowiedz

8

Jeśli piszesz plik, należy określić open(filename, "wb"). W ten sposób będziesz pisać w trybie binarnym, a Python nie będzie próbował określić poprawnych linii nowego systemu, w którym jesteś.

+0

Dziękuję za odpowiedź, ale próbuję napisać "coś" do "pliku" i wygląda na to, że "Uniwersalny tryb nowej linii" może być używany tylko z "rU", jeśli się nie mylę. W każdym razie to nie działa. – DGT

4

Python może otworzyć plik w trybie binarnym lub w trybie tekstowym. Tekst jest domyślny, więc tryb "w" oznacza zapis w trybie tekstowym. W trybie tekstowym Python dostosuje zakończenia linii dla platformy, na której się znajdujesz. Oznacza to w systemie Windows, ten kod:

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

spowoduje pliku tekstowego zawierającego "Hello \ r \ n".

Można otworzyć plik w trybie binarnym za pomocą „B” w trybie:

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

wyniki w pliku tekstowym zawierającym „Hello \ n”.

+0

Właściwie to "coś" pochodzi z textarea formularza HTML, gdzie kopiuję i wklejam "coś". Następnie skrypt otrzymuje wartość: something = form["some_name"].value DGT

2

dos2unix filename.py

przekonwertować linia łamie do stylu UNIX.

1

pracował dla mnie string.replace ('\ r', '').

brzydki, ale ani R + ani R + b ani NIC WIĘCEJ pracował (dla mnie, na pewno) :(

0

Dla przenośności, można wypróbować następujące

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

run autopep8 na plik

> apt-get install python-autopep8 

> autopep8 python_file_name > new_python_file_name.py 
+0

Nie o to pyta. Prawdopodobnie miałoby to również inne skutki uboczne; odpowiedzieć na zadane pytanie z detalami i prawdziwymi rozwiązaniami. – kevr