Tôi đang cố gắng để có được re.sub
để thay thế một mẫu quy định với một giá trị ví dụre.sub không làm việc cho tôi
for lines in f:
pattern='\${2}'+key[0]+'\${2}'
re.search(pattern,lines)
này trả lại dòng nơi các mô hình đã được tìm thấy. Ví dụ này là một trong những lợi nhuận kiểm tra nếu có
đây là một thử nghiệm $$ $$
Vấn đề tôi đang gặp là khi tôi làm như sau
re.sub(pattern,key[1],lines)
có gì xảy ra. Tôi đang thiếu gì? Để biết thêm thông tin key[0]=test
và key[1]=replace
vì vậy những gì tôi đang cố gắng làm là bất cứ khi nào "$$ test $$" gặp phải, nó sẽ thay thế bằng "thay thế". Tôi không gặp vấn đề gì khi tìm kiếm "$$ test $$" nhưng vì lý do nào đó, re.sub
sẽ không thay thế.
Khi bạn cần lưu trữ dấu gạch chéo ngược trong chuỗi, tốt hơn nên sử dụng biểu mẫu dấu gạch chéo ngược kép. Trong trường hợp của bạn, nó hoạt động bằng Python bởi vì ký hiệu đô la không có ý nghĩa đặc biệt khi bắt đầu bằng dấu gạch chéo ngược và vì Python trong trường hợp đó duy trì cả hai ký tự, nhưng trong các ngôn ngữ khác viết '' \ $ ''sẽ có nghĩa là'' $ ''. Khi ai đó đang đọc một chuỗi và tìm thấy dấu gạch chéo ngược mong đợi một điều gì đó đặc biệt hoặc một dấu gạch chéo ngược khác. Nếu bạn cần nhiều dấu gạch chéo ngược trong một chuỗi thì bạn nên sử dụng chuỗi thô ... – 6502
Đối với những người truy cập vào đây với các vấn đề 're.sub' chung, [đảm bảo] (https://stackoverflow.com/questions/8813265/ why-doesnt-ignorecase-flag-re-i-work-in-sub-sub) bạn đang truyền 're.IGNORECASE' như một đối số' flags = ', không phải là đối số' count'. – Noumenon