Có cách nào được khuyến nghị để thực hiện nhiều thay thế chuỗi khác với chuỗi 'thay thế' trên một chuỗi (ví dụ: text.replace (a, b) .replace (c, d). thay thế (e, f) ...)? Ví dụ: bạn sẽ triển khai chức năng nhanh như thế nào hoạt động như htmlspecialchars của PHP bằng Python?Thực hiện nhanh nhất để thực hiện nhiều thay thế chuỗi trong Python
Tôi đã so sánh (1) nhiều phương pháp 'thay thế', (2) phương thức biểu thức chính quy và (3) phương pháp của Matt Anderson.
Với n = 10 chạy, kết quả đã đưa ra như sau:
On 100 ký tự:
TIME: 0 ms [ replace_method(str) ] TIME: 5 ms [ regular_expression_method(str, dict) ] TIME: 1 ms [ matts_multi_replace_method(list, str) ]
On 1000 ký tự:
TIME: 0 ms [ replace_method(str) ] TIME: 3 ms [ regular_expression_method(str, dict) ] TIME: 2 ms [ matts_multi_replace_method(list, str) ]
On 10000 ký tự:
TIME: 3 ms [ replace_method(str) ] TIME: 7 ms [ regular_expression_method(str, dict) ] TIME: 5 ms [ matts_multi_replace_method(list, str) ]
Bật 100000 ký tự:
TIME: 36 ms [ replace_method(str) ] TIME: 46 ms [ regular_expression_method(str, dict) ] TIME: 39 ms [ matts_multi_replace_method(list, str) ]
On 1000000 ký tự:
TIME: 318 ms [ replace_method(str) ] TIME: 360 ms [ regular_expression_method(str, dict) ] TIME: 320 ms [ matts_multi_replace_method(list, str) ]
On 3.687.809 nhân vật:
TIME: 1.277524 sec [ replace_method(str) ] TIME: 1.290590 sec [ regular_expression_method(str, dict) ] TIME: 1.116601 sec [ matts_multi_replace_method(list, str) ]
Vì vậy, thanh danh cho Matt cho đập phương pháp đa 'thay thế' trên một chuỗi đầu vào khá lớn .
Bất kỳ ai có ý tưởng để đánh bại nó trên một chuỗi nhỏ hơn?
Thảo luận tốt tại đây http://stackoverflow.com/questions/3367809/efficiently-carry-out-multiple-string-replacements-how-to-create-lookup-table –
Tim, chỉ nhận xét hữu ích trên trang mới là một của Alex. Ông đưa ra một ví dụ cho phương thức thay thế biểu thức chính quy tuyến tính mà tôi đã xác minh là chậm hơn trên tài liệu kích thước 3,5M với 5 cặp thay thế. Vì vậy, nó không cung cấp ý tưởng mới cho tôi. – OTZ
Bạn có yêu cầu kết quả của sự thay thế đầu tiên có sẵn để tham gia vào sự thay thế tiếp theo (vì nó sẽ nằm trong ví dụ về chuỗi thay thế của bạn)? Hay bạn muốn tất cả các thay thế chỉ hoạt động trên văn bản gốc? Nếu sau này, bạn có một cái gì đó trong tâm trí về làm thế nào để ưu tiên cho họ nếu chồng chéo hay xung đột khác? –