Tất cả các công cụ khác mà tôi đã tìm thấy chỉ là so sánh từng dòng thay vì char bằng char. Có thư viện nào cung cấp chi tiết về các chuỗi đơn không? Có lẽ cũng có một sự khác biệt về tỷ lệ phần trăm, mặc dù tôi đoán có những chức năng riêng biệt cho điều đó?khác nhau cho các dòng đơn
Trả lời
này diffs thuật toán word-by-word:
http://github.com/paulgb/simplediff
sẵn bằng Python và PHP. Nó thậm chí có thể nhổ ra đầu ra định dạng HTML bằng cách sử dụng các thẻ <ins>
và <del>
.
Tốt, nhưng khoảng trắng cũng quan trọng. Một tab được thay thế bởi một khoảng trống sẽ là một sự khác biệt không được chọn bởi điều này. –
Mã nguồn trông đủ đơn giản. Bạn có thể dễ dàng thay đổi nó để tách trên chuỗi rỗng thay vì khoảng trắng để bạn có thể khác biệt từng ký tự. – slebetman
Thực ra cái này hoạt động tuyệt vời, bằng cách truyền các chuỗi trực tiếp đến diff() thay vì thông qua stringDiff(). Hoạt động độc đáo trên một char bởi char cơ sở, bởi vì chuỗi là trình tự trong python. Và đầu ra của hàm cũng dễ làm việc. Tôi tự hỏi về chi phí của việc tìm kiếm chuỗi con phổ biến lớn nhất mặc dù, khi mỗi mục chỉ là một char ... mặc dù tôi có thể hiểu sai mã ... –
Những gì bạn có thể thử là chia cả hai chuỗi ký tự thành ký tự thành các dòng và sau đó bạn có thể sử dụng khác biệt trên đó. Đó là một hack bẩn, nhưng ít nhất nó sẽ làm việc và khá dễ dàng để thực hiện.
Hoặc bạn có thể chia chuỗi thành một danh sách các ký tự trong Python và sử dụng difflib. Kiểm tra Python difflib reference
Tôi nghĩ về điều này, và nó trông giống như tùy chọn "tốt nhất" cho đến nay. Tôi cũng đã xem xét xem xét các công cụ khác biệt của dòng và cố gắng làm cho nó xử lý ký tự như là dòng thay vì ... nhưng tôi nghĩ rằng tôi muốn kiểm tra đầu tiên. –
Điều đó có thể được thực hiện dễ dàng 'diff <(cat file1 | tr "" "\ n") <(cat fil2 | tr "" "\ n") 'nhưng vấn đề là đầu ra được định dạng kém. Tốt hơn nhiều để làm 'wdiff file1 file2' Nhờ câu trả lời của @Michael Williamson. –
Đây là phiên bản ký tự theo từng ký tự 'diff <(cat a1 | sed 's /./ \ 0 \ n /' g) <(cat a2 | sed 's /./ \ 0 \ n /' g) ' –
Tôi đã tìm kiếm một cái gì đó tương tự gần đây và đã xem qua wdiff. Nó hoạt động trên các từ, không phải ký tự, nhưng nó gần với những gì bạn đang tìm kiếm?
Tốt, nhưng khoảng trắng cũng quan trọng. Một tab được thay thế bởi một khoảng trống sẽ là một sự khác biệt không được chọn bởi điều này (nếu chia cho khoảng trắng). –
wdiff dường như bị bỏ rơi từ năm 1994. nó hoạt động, chủ yếu. – lhf
@lhf, Nó bị bỏ rơi hay đơn giản là không còn nhiều cải tiến nữa? –
Bạn có thể triển khai thuật toán đơn giản Needleman – Wunsch. Mã giả có sẵn trên Wikipedia: http://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm
- 1. Diff-command: không in các dòng khác nhau nhưng vẫn cho biết hai tệp khác nhau
- 2. màu foreground khác nhau cho mỗi dòng trong wxPython wxTextCtrl
- 3. C++: lớp khác nhau có cùng tên trong các đơn vị dịch khác nhau
- 4. Đơn vị thử nghiệm dòng con lồng nhau (dòng con của dòng phụ)
- 5. Sử dụng các trình nạp lớp khác nhau cho các bài kiểm tra JUnit khác nhau?
- 6. Cách xử lý các thực thể thuộc tính khác nhau cho các thực thể khác nhau
- 7. làm cho nstextfield dòng đơn
- 8. Màu khác nhau cho các chuỗi khác nhau trong biểu đồ XYline JFreeChart
- 9. package.json cho các môi trường khác nhau?
- 10. thay đổi phông chữ trong một JTextArea cho các dòng khác nhau
- 11. Dòng shebang có điều kiện cho các phiên bản Python khác nhau
- 12. emacs: thụt đầu dòng khác nhau cho các lớp học và struct
- 13. Kiểm tra đơn vị Java cho các dữ liệu đầu vào khác nhau
- 14. Gnuplot: cách thêm thang y2 cho các đơn vị khác nhau
- 15. Cấu hình trình đơn ngữ cảnh nhấp chuột phải jstree cho các loại nút khác nhau
- 16. Cờ biên dịch khác nhau cho cùng một tệp trong các mục tiêu khác nhau
- 17. Các tệp CSS khác nhau cho các truy vấn Phương tiện khác nhau
- 18. Gửi các đối số khác nhau cho các máy chủ khác nhau trong Fabric
- 19. Làm cách nào để chỉ định các dải màu khác nhau cho các cấp khác nhau?
- 20. MySQL - Các công cụ khác nhau cho các bảng khác nhau
- 21. Các phương pháp Java khác nhau cho các cấp API khác nhau
- 22. Visual Studio 2012: các chủ đề màu sắc khác nhau cho các dự án khác nhau
- 23. Làm cách nào để cấp các quyền khác nhau cho các lớp Java khác nhau?
- 24. Cách sử dụng các tệp .settings khác nhau cho các môi trường khác nhau trong .NET?
- 25. Các tệp Default.png khác nhau cho các mục tiêu khác nhau trong một dự án
- 26. Các trình duyệt khác nhau, các IP khác nhau?
- 27. XCode Tài nguyên khác nhau cho các mục tiêu khác nhau
- 28. Các cách khác nhau để sử dụng __init__ cho PyQt4
- 29. Phông chữ mặc định cho Hộp văn bản nhiều dòng khác với Hộp văn bản đơn?
- 30. Tại sao C# gọi khác nhau cho các phương thức quá tải cho các giá trị khác nhau cùng loại?
Đây không phải là bản sao của http://stackoverflow.com/questions/1721738/using-diff-or-anything-else-to-get-character-level-diff giữa các tập tin văn bản? –