Tôi vẫn đang học Python, và tôi có một câu hỏi mà tôi chưa thể giải quyết được. Tôi có một chuỗi rất dài (hàng triệu dòng dài) mà tôi muốn được chia thành một chuỗi dài hơn dựa trên số lần xuất hiện cụ thể của một dấu phân cách.Python - Tách chuỗi lớn theo số lần xuất hiện dấu phân tách
Ví dụ:
ABCDEF
//
GHIJKLMN
//
OPQ
//
RSTLN
//
OPQR
//
STUVW
//
XYZ
//
Trong trường hợp này tôi muốn chia nhỏ dựa trên "//" và trả về một chuỗi của tất cả các dòng trước sự xuất hiện thứ n của delimeter.
Vì vậy, một đầu vào của việc tách chuỗi bằng // 1 sẽ trở lại:
ABCDEF
một đầu vào của việc tách chuỗi bằng // 2 sẽ quay trở lại:
ABCDEF
//
GHIJKLMN
một đầu vào của chia chuỗi theo // bởi 3 sẽ trả về:
ABCDEF
//
GHIJKLMN
//
OPQ
Và cứ như vậy ... Tuy nhiên, Độ dài của chuỗi 2 triệu dòng ban đầu dường như là một vấn đề khi tôi chỉ cố gắng chia toàn bộ chuỗi và "//" và chỉ làm việc với các chỉ mục riêng lẻ. (Tôi đã nhận được một lỗi bộ nhớ) Có lẽ Python không thể xử lý rất nhiều dòng trong một phân chia? Vì vậy, tôi không thể làm điều đó.
Tôi đang tìm cách mà tôi không cần chia toàn bộ chuỗi thành hàng trăm nghìn chỉ mục khi tôi chỉ cần 100, nhưng thay vì chỉ bắt đầu từ đầu cho đến một điểm nhất định, hãy dừng và quay lại tất cả mọi thứ trước đó, mà tôi cho rằng cũng có thể nhanh hơn? Tôi hy vọng câu hỏi của tôi càng rõ ràng càng tốt.
Có cách nào đơn giản hay thanh lịch để đạt được điều này? Cảm ơn!
Tại sao bạn không sử dụng trình tạo để đọc n mục đầu tiên cho đến khi bạn đọc số dấu phân cách "//" được yêu cầu? theo cách đó, bạn chỉ đọc những gì bạn cần –
Cảm ơn, tôi cũng sẽ xem xét các máy phát điện vì tôi không quen với chúng. – Indie
Vui lòng hiển thị mã bạn đã thử cho đến thời điểm này. –