Tôi đang viết một tập lệnh ETL bằng Python nhận dữ liệu trong tệp CSV, xác thực và vệ sinh dữ liệu cũng như phân loại hoặc phân loại từng hàng theo một số quy tắc và cuối cùng tải nó vào một cơ sở dữ liệu postgresql.Cách phân loại/phân loại chuỗi theo quy tắc biểu thức chính quy trong Python
Dữ liệu trông như thế này (giản thể):
ColA, ColB, Timestamp, Timestamp, Journaltext, AmountA, AmountB
Mỗi hàng là một giao dịch tài chính. Điều tôi muốn làm là phân loại hoặc phân loại các giao dịch dựa trên một số quy tắc. Các quy tắc về cơ bản là các biểu thức chính quy phù hợp với văn bản trong cột Journaltext.
Vì vậy, những gì tôi muốn làm là một cái gì đó như thế này:
transactions = [] for row in rows: t = Transaction(category=classify(row.journaltext)) transactions.append(t)
Tôi không chắc chắn làm thế nào để viết classify() chức năng một cách hiệu quả.
Đây là cách các quy tắc để phân loại hoạt động:
- Có một số chủng loại (hơn có thể và sẽ được bổ sung sau)
- Mỗi thể loại có một tập hợp các chuỗi con hoặc biểu thức thông thường rằng, nếu Journaltext của một giao dịch khớp với biểu thức này hoặc chứa chuỗi con này, thì giao dịch này thuộc về thể loại này.
- Giao dịch chỉ có thể ở trên một danh mục
- Nếu danh mục, FOO, có foo 'và' Foo 'và một loại BAR khác có' bóng đá ', sau đó giao dịch với Journaltext =' food 'phải được đặt trong danh mục FOO, vì nó chỉ khớp với FOO, nhưng một giao dịch với Journaltext = 'footballs' phải được đặt trong danh mục BAR. Tôi nghĩ điều này có nghĩa là tôi phải đặt ưu tiên hoặc tương tự trên mỗi danh mục.
- Nếu giao dịch không khớp với bất kỳ cụm từ nào, giao dịch sẽ không có trong danh mục hoặc sẽ được đặt trong danh mục trình giữ chỗ được gọi là "UNKNOWN" hoặc tương tự. Điều này không quan trọng lắm.
Ok. Vì vậy, làm thế nào để tôi đại diện cho các loại này và các quy tắc tương ứng trong Python?
Tôi thực sự đánh giá cao ý kiến của bạn. Ngay cả khi bạn không thể cung cấp giải pháp đầy đủ. Chỉ cần bất cứ điều gì để gợi ý cho tôi đi đúng hướng sẽ là tuyệt vời. Cảm ơn.
lớn như thế nào là đầu vào của bạn (số chủng loại, về mỗi loại, số lượng giao dịch và kích thước trung bình của văn bản)? –