que tienen un sistema de análisis de registros de texto de longitud fija sobre la base de una tabla de diseño:Cómo hacer "int" analizar cadenas en blanco?
parse_table = [\
('name', type, length),
....
('numeric_field', int, 10), # int example
('textc_field', str, 100), # string example
...
]
La idea es que dada una mesa para un tipo de mensaje, acabo de ir a través de la cadena, y reconstruir un diccionario a cabo de ella, según las entradas en la tabla.
Ahora, puedo manejar cadenas y enteros correctos, pero int()
no analizará todos los campos de espacios (por una buena razón, por supuesto).
Quería manejarlo definiendo una subclase de int
que maneja cadenas en blanco. De esta manera podría ir y cambiar el tipo de entradas de tabla apropiadas sin introducir kludges adicionales en el código de análisis sintáctico (como filtros), y simplemente "funcionaría".
Pero no puedo imaginar cómo anular el constructor de un tipo de compilación en un subtipo, ya que definir el constructor en la subclase no parece ayudar. Siento que aquí me falta algo fundamental sobre cómo funcionan los tipos incorporados de Python.
¿Cómo debo abordar esto? También estoy abierto a alternativas que no agregan demasiada complejidad.
+1 ... Estoy tratando de hacer algo ligeramente parecido en mi proyecto ... actualmente, en lugar de tomar "tipos", tomo las funciones que devuelven el tipo apropiado. Por lo tanto, puede manejar cadenas en blanco y * luego * devolver un int. – mpen
Intente reemplazar la función int por una que desee usar en su lugar. – Arafangion
¿Cómo maneja los campos de cadena de longitud fija? ¿Dejando el espacio en blanco al final allí? –