2012-09-27 57 views
8

tôi đang cố gắng thay thế một dấu chéo ngược '\' trong một chuỗi với đoạn mã saulàm thế nào để thay thế trở lại nhân vật slash với chuỗi rỗng trong python

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

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

kết quả:

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

Đây i don' t cần slashes trở lại bởi vì thực sự tôi đang phân tích cú pháp một tập tin xml trong đó có một thẻ ở định dạng trên, vì vậy nếu dấu gạch chéo ngược có nó đang hiển thị invalid token trong khi phân tích

Tôi có thể biết cách để thay thế cho dấu xồ nguợc với chuỗi rỗng trong python

Trả lời

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

Lỗi này là bởi vì bạn không thêm một ký tự thoát để '\' của bạn, bạn nên cung cấp cho \\ cho 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

Chỉ cần để cung cấp cho giải thích cho bạn: dấu gạch chéo ngược \ có ý nghĩa đặc biệt bằng nhiều ngôn ngữ. Trong Python, lấy từ doc:

Các dấu chéo ngược() nhân vật được sử dụng để thoát khỏi nhân vật mà nếu không có một ý nghĩa đặc biệt, chẳng hạn như xuống dòng, dấu chéo ngược bản thân, hoặc nhân vật báo giá.

Vì vậy, để thay thế \ trong một chuỗi, bạn cần phải thoát khỏi dấu chéo ngược bản thân sử dụng "\\"

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

Bạn cần phải thoát khỏi '\' với một dấu chéo ngược thêm để so sánh thực sự với \. . vì vậy, bạn nên sử dụng '\' ..

Xem Python Documentation - section 2.4 cho tất cả các escape sequences bằng Python .. Và làm thế nào bạn nên xử lý ..

Các vấn đề liên quan