2012-05-14 32 views
6

Tôi có chuỗi sauPython làm thế nào để thay thế dấu chéo ngược với re.sub()

mystr1 = 'mydirname' 
myfile = 'mydirname\myfilename' 

Tôi đang cố gắng để làm điều này

newstr = re.sub(mystr1 + "\","",myfile) 

Làm thế nào để thoát khỏi dấu chéo ngược Tôi đang cố gắng để nối với mystr1?

+4

Tôi biết rằng điều này không có cách nào trả lời câu hỏi của bạn, nhưng nếu có thể thậm chí không đến đó; sử dụng các hàm 'os.path.join' và' os.path' khác để thao tác các đường dẫn theo cách độc lập với hệ thống. – Amadan

+0

@Amadan, cảm ơn bạn đã trả lời, nhưng tôi không cố gắng thao túng bất kỳ đường dẫn nào, tôi chỉ cố gắng lấy nội dung từ một tệp cụ thể (cho điều đó, tôi đang sử dụng os.path) và sau đó tôi đang khai thác dữ liệu và đặt nó dưới dạng biến thể JS theo tên tệp gốc. Tôi chỉ thao tác chuỗi của tên tệp (bao gồm đường dẫn đầy đủ) cho biến thể JS. – user838437

+0

Tôi chỉ nghĩ rằng những gì bạn đang làm gần như giống như 'os.path.basename (myfile)'. Lỗi của tôi. – Amadan

Trả lời

16

Bạn cần một dấu chéo ngược bốn:

newstr = re.sub(mystr1 + "\\\\", "", myfile) 

Lý do:

  • Regex để phù hợp với một dấu gạch chéo duy nhất: \\
  • String để mô tả regex này: "\\\\".

Hoặc bạn có thể sử dụng một chuỗi nguyên, vì vậy bạn chỉ cần một dấu gạch chéo kép: r"\\"

+0

Tác phẩm này cảm ơn bạn. Tôi sẽ chấp nhận câu trả lời khi tôi có thể. – user838437

+0

Không có trong Python 3.2 của tôi (r32: 88445, ngày 20 tháng 2 năm 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] trên win32: '>>> subject =" is th \ is: a path ? "; re.sub ("[/ \\\:? \"] "," _ ", chủ đề) 'là th_is_ một path_'' –

+0

Nhưng tôi chỉ nhận thấy rằng chỉ có các lần thoát không xác định như" \: ". –

0

Trong một biểu thức chính quy, bạn có thể thoát khỏi một dấu chéo ngược giống như bất kỳ nhân vật khác bằng cách đặt một dấu gạch chéo ở phía trước của nó . Điều này có nghĩa là "\\" là một dấu gạch chéo ngược đơn.

+0

Có, nhưng chúng ta đang xử lý các chuỗi ở đây * chứa * một cụm từ thông dụng. Quy tắc thoát kép áp dụng. –

+0

TEOUltimus: câu trả lời của bạn chủ yếu là đúng vấn đề chỉ là sâu hơn một chút, tôi sẽ upvote nó vì vậy nó là 0 thay vì -1.Thông tin phản hồi cho lần sau: bình luận 'tại sao tôi ghét python' là cái gì đó không được đánh giá cao trên stackoverflow Stackoverflow là câu trả lời vững chắc, không phải cho slinging bùn –

+0

và mặc dù bạn có thể nghĩ rằng r "\" sẽ nhận được bạn giống như "\\", như r "\\" là "\\\\", bạn ' d sai ... bạn không thể có một \: P – mpag

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