2012-09-27 9 views
8

próbuję zastąpić ukośnika „\” w ciąg z następującego kodujak wymienić z powrotem znak slash z pustym ciągiem znaków w Pythonie

string = "<P style='TEXT-INDENT'>\B7 </P>" 

result = string.replace("\",'') 

wynik:

------------------------------------------------------------ 
    File "<ipython console>", line 1 
    result = string.replace("\",'') 
            ^
SyntaxError: EOL while scanning string literal 

Tu i don” • Potrzebuję odwrotnych ukośników, ponieważ faktycznie parsuję plik xml, który ma znacznik w powyższym formacie, więc jeśli występują odwrotne ukośniki, podczas analizy parsowania wyświetla się invalid token

Czy mogę wiedzieć, jak zastąpić backslashy z pustym ciągiem znaków w Pythonie

Odpowiedz

11
result = string.replace("\\","") 
4

Błąd jest, ponieważ nie dodać znak ucieczki do '\', należy dać \\ dla backslash (\)

In [147]: str = "a\c\d" 

In [148]: str 
Out[148]: 'a\\c\\d' 

In [149]: str.replace('\\', " ") 
Out[149]: 'a c d' 

In [150]: str.replace('\\', "") 
Out[150]: 'acd' 
1
>>> string = "<P style='TEXT-INDENT'>\B7 </P>" 
>>> result = string.replace("\\",'') 
>>> result 
"<P style='TEXT-INDENT'>B7 </P>" 
1

Wystarczy dać Wyjaśnienie: odwrotny ukośnik \ ma specjalne znaczenie w wielu językach. W Pythonie, biorąc od doc:

charakter odwrotny ukośnik() służy do ucieczki znaki, które w przeciwnym razie mają szczególne znaczenie, jak znak nowej linii, odwrotny ukośnik, lub znak.

Tak więc, w celu zastąpienia \ w ciąg, trzeba ukośnika dwukrotnie używając "\\"

>>> "this is a \ I want to replace".replace("\\", "?") 
'this is a ? I want to replace' 
0

Musisz uciec „\” z jednym dodatkowym backslashem porównać faktycznie z \. . Więc należy użyć „\” ..

Zobacz Python Documentation - section 2.4 dla wszystkich escape sequences w Pythonie .. I jak należy obchodzić się z nimi ..

Powiązane problemy