2014-05-22 17 views
5

Tôi có từ điển (ví dụ: tiếng Anh - Croatia). Nó có thể chứa các câu và cụm từ. Tôi đang dịch một tệp có dạng "english text" = "english text" thành biểu mẫu "english text" = "croatian text" và sử dụng mô-đun regex python để làm như vậy. Các regex Tôi đang sử dụng ngoại hình như thế này (cho biến gốc đó là văn bản bằng tiếng Anh mà phải được dịch:Dấu ngoặc đơn bằng python regex

regexString = '(?<= = ")'+original+'(?=")' 

Bằng cách đó I'am thể nắm bắt chính xác các văn bản tiếng anh bên trong dấu ngoặc kép trên phía bên phải và thay thế nó với Croatia Tuy nhiên, vấn đề xuất hiện nếu văn bản gốc chứa ngoặc bên Trong ví dụ:..

original = 'This is a wonderland :)' 

Trong trường hợp đó một lỗi "không cân bằng ngoặc" được nâng lên Nếu gốc sẽ. được ha được mã hóa thứ ba, tôi có thể giải quyết vấn đề bằng cách đặt

original = 'This is a wonderland :\\)' 

Tuy nhiên, có toàn bộ tệp * biến * gốc.
Có giải pháp nào cho vấn đề này ngoài việc thay đổi biến ban đầu bằng cách đặt trước tất cả dấu ngoặc đơn trong dấu gạch chéo ngược không?

+0

@ Tim Pietzcker, tại sao ** đôi ** xuyệc ngược? – kruk

+1

Dấu gạch chéo ngược cần phải được thoát vì nó có thể bắt đầu một chuỗi thoát khác, tùy thuộc vào ký tự theo sau nó. Trong khi '\)' là không rõ ràng (và sẽ được dịch bởi trình thông dịch Python thành '\\)' tự động), các chuỗi khác như '\ n',' \ b' vv có ý nghĩa đặc biệt. Thực hành tốt là làm rõ điều này, bằng cách tăng gấp đôi các dấu gạch chéo ngược hoặc bằng cách sử dụng chuỗi thô. –

Trả lời

3

Bạn có thể sử dụng để xử lý re.escape này:

regexString = '(?<= = ")' + re.escape(original) + '(?=")' 
+0

cảm ơn cho câu trả lời nhanh chóng, điều này đã giúp! – kruk

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