想实现一个参数聚类的方法, 分析出参数都是什么数据类型(int, string, float, double),
Python 内置提供的功能有限,而且暂时不考虑直接采用正则。
最终想要的结果,给出参数,得出数据类型路径
c = '/buy/12333/price/2.00' structure = '/str/int/str/float'
python 只支持最基础的数据类型,现在实现是通过硬编码一个一个的字符带入到 curses.ascii 内置的函数做检测,感觉有点笨,不知道外面有没有已经造好的第三方库。
a = '3.14' print a.isalpha() print a.isdigit() print a.isalnum() b = '/admin/login.php' c = '/read/12333/' e = '/t/id/12333/'
isInt(), isFloat(), 不存在。。。
<?php $var = filter_var('0755', FILTER_VALIDATE_INT, $options); var_dump(filter_var('[email protected]', FILTER_VALIDATE_EMAIL)); var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
1 ringzero OP 最终想要的结果,给出参数,得出数据类型路径 ```python c = '/buy/12333/price/2.00' structure = '/str/int/str/float' ``` |
![]() | 2 hwsdien 2017-02-12 14:14:48 +08:00 isinstance |
3 ringzero OP @hwsdien 恩,尝试过这种方法, 要强转之后,才能判断,默认传过去的是 str 类型 a = '3.14' print isinstance(a, float) False print isinstance(float(a), float) True |
4 ringzero OP 先把 str 强转成精度高的 float 类型,做 try catch 捕捉住 ValueError 错误 然后用 float.is_integer()来判断数字是否是整形,解决的办法还是笨。 |
5 wmttom 2017-02-12 15:05:53 +08:00 有一个库叫 marshmallow ,在前段时间做 swagger 文档自动生成代码的时候使用过,用作验证类型还是很好使的,自定义空间也很大。 |
![]() | 6 congeec 2017-02-12 15:36:15 +08:00 via iPad ![]() |
![]() | 7 TJT 2017-02-12 22:46:24 +08:00 |
![]() | 8 TJT 2017-02-12 22:46:40 +08:00 |
![]() | 9 TJT 2017-02-12 22:49:01 +08:00 |