咨询: Python 有类似 PHP 的 filter_var 函数或者第三库吗?

2017-02-12 14:06:00 +08:00
 ringzero

想实现一个参数聚类的方法, 分析出参数都是什么数据类型(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('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
2151 次点击
所在节点    Python
9 条回复
ringzero
2017-02-12 14:08:19 +08:00
最终想要的结果,给出参数,得出数据类型路径

```python
c = '/buy/12333/price/2.00'
structure = '/str/int/str/float'
```
hwsdien
2017-02-12 14:14:48 +08:00
isinstance
ringzero
2017-02-12 14:17:56 +08:00
@hwsdien
恩,尝试过这种方法, 要强转之后,才能判断,默认传过去的是 str 类型

a = '3.14'
print isinstance(a, float)
False
print isinstance(float(a), float)
True
ringzero
2017-02-12 14:25:28 +08:00
先把 str 强转成精度高的 float 类型,做 try catch 捕捉住 ValueError 错误
然后用 float.is_integer()来判断数字是否是整形,解决的办法还是笨。
wmttom
2017-02-12 15:05:53 +08:00
有一个库叫 marshmallow ,在前段时间做 swagger 文档自动生成代码的时候使用过,用作验证类型还是很好使的,自定义空间也很大。
congeec
2017-02-12 15:36:15 +08:00
TJT
2017-02-12 22:46:24 +08:00
TJT
2017-02-12 22:46:40 +08:00
TJT
2017-02-12 22:49:01 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/339904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX