2012-08-16 23 views
9

Mam dane tekstowe, że drukuje się rzeczywiste znaki „\ r \ n” (a więc cztery znaki łącznie). Chciałbym zastąpić te cztery znaki pojedynczym znakiem "\ n", ale nie mogę sprawić, by Python zrobił to za mnie. Obecnie próbuję:Wymiana „ r n” o „ n”

mytext.replace("\r\n", "\n") 

Ale to po prostu wypisuje "\ n" (dwa znaki, nie jeden). Czuję, że prawdopodobnie brakuje mi czegoś oczywistego, ale każda pomoc będzie doceniona.

+2

Jeśli jest to plik, możesz go odczytać za pomocą 'open (nazwa_pliku, 'rU')' i wszystkie będą "\ n" " – jamylak

Odpowiedz

15

polecam korzystania splitlines zamiast regex lub wyszukiwania/zastąpić

"\n".join(mytext.splitlines()) 
+0

To powinno być rozwiązanie – geotheory

0

Niestety, ja misread swoje pytanie:

W takim przypadku należy poprzedzić swój ciąg z AR używać surowych ciągi:

mytext.replace(r"\r\n", r"\n") 
+0

jeśli" \ r \ n "- jest 4 znaki, a następnie usunięcie 2 nie będzie help/ – Stals

13
mytext.replace(r"\r\n", r"\n") 

'R' oznacza surowy ciąg, co mówi programowi Python, aby interpretował ukośniki w tekście jako znaki literalne, a nie znaki ucieczki.

+2

To nic dla mnie nie robi (ubuntu) – geotheory

3

"\n".join(mytext.splitlines()) Działa to dla mnie. mytext.replace(r"\r\n", r"\n"), to nie działa.

2

Jest to rozwiązanie, aby spróbować, jeśli którekolwiek z powyższych nie działa (co miało dla mnie za pomocą dystrybucji Anakonda z Python3).

mytext.replace("\\r\\n", "\\n") 

Ma to związek z tym, że \ jest używane jako znak ucieczki. Pomyślałem, że powyższe odpowiedzi, które użyłyby surowego formatera stringów, osiągnęłyby to samo, ale z jakiegokolwiek powodu, który nie zadziałałby dla mnie, i tak się stało.