想实现一个参数聚类的方法, 分析出参数都是什么数据类型(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 1
|
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
|