作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个基于布局表的定长文本记录解析系统:
parse_table = [\
('name', type, length),
....
('numeric_field', int, 10), # int example
('textc_field', str, 100), # string example
...
]
这个想法是,给定一个消息类型的表,我只需遍历字符串,并根据表中的条目重建一个字典。
现在,我可以处理字符串和正确的整数,但 int()
不会解析全空格字段(当然,这是有充分理由的)。
我想通过定义一个处理空白字符串的 int
子类来处理它。这样我就可以去更改适当的表条目的类型,而无需在解析代码中引入额外的 kludges(如过滤器),它会“正常工作”。
但我不知道如何在子类型中覆盖内置类型的构造函数,因为在子类中定义构造函数似乎没有帮助。我觉得我在这里遗漏了一些关于 Python 内置类型如何工作的基本知识。
我应该如何处理这个问题?我也愿意接受不会增加太多复杂性的替代方案。
最佳答案
使用带有参数s.strip()或0
的int()
函数,即:
int(s.strip() or 0)
或者如果您知道字符串将始终只包含数字字符或为空(""
),那么只需:
int(s or 0)
在您的具体情况下,您可以使用 lambda 表达式,例如:
parse_table = [\
....
('numeric_field', lambda s: int(s.strip() or 0), 10), # int example
...
]
关于python - 如何让 "int"解析空白字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941681/
我是一名优秀的程序员,十分优秀!