tôi có một hệ thống phân tích cú pháp cho các hồ sơ văn bản cố định chiều dài dựa trên một bảng bố trí:Làm thế nào để làm cho "int" phân tích chuỗi trống?
parse_table = [\
('name', type, length),
....
('numeric_field', int, 10), # int example
('textc_field', str, 100), # string example
...
]
Ý tưởng là cho một bảng cho một loại tin nhắn, tôi chỉ đi qua các chuỗi, và tái tạo lại một cuốn từ điển ra của nó, theo các mục trong bảng.
Bây giờ, tôi có thể xử lý chuỗi và số nguyên thích hợp, nhưng int()
sẽ không phân tích cú pháp tất cả các trường trống (vì một lý do chính đáng).
Tôi muốn xử lý nó bằng cách xác định một lớp con của int
xử lý các chuỗi trống. Bằng cách này tôi có thể đi và thay đổi loại mục nhập bảng thích hợp mà không đưa vào các mã klud bổ sung trong mã phân tích (như bộ lọc), và nó sẽ "chỉ hoạt động".
Nhưng tôi không thể tìm ra cách ghi đè hàm tạo của kiểu dựng sẵn trong một loại phụ, vì việc xác định hàm tạo trong lớp con dường như không giúp ích gì. Tôi cảm thấy tôi đang thiếu một cái gì đó cơ bản ở đây về cách thức Python xây dựng trong các loại làm việc.
Tôi nên tiếp cận điều này như thế nào? Tôi cũng mở cửa cho các lựa chọn thay thế không thêm quá phức tạp.
+1 ... Tôi đang cố gắng để làm một cái gì đó hơi tương tự trong dự án của tôi ... hiện tại thay vì dùng "kiểu", tôi lấy các hàm trả về kiểu thích hợp. Vì vậy, bạn có thể xử lý các chuỗi trống và * sau đó * trả về một int. – mpen
Hãy thử thay thế hàm int bằng một hàm bạn muốn sử dụng thay thế. – Arafangion
Bạn xử lý các trường chuỗi có độ dài cố định như thế nào? Để lại khoảng trống ở cuối trong đó? –