栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Python中的字符串确定“值的类型”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Python中的字符串确定“值的类型”

在太过正则表达式之前,您是否考虑过使用ast.literal_eval

例子:

In [35]: ast.literal_eval('1')Out[35]: 1In [36]: type(ast.literal_eval('1'))Out[36]: intIn [38]: type(ast.literal_eval('1.0'))Out[38]: floatIn [40]: type(ast.literal_eval('[1,2,3]'))Out[40]: list

也可以使用Python为您解析它!

好的,这是一个更大的示例:

import ast, redef dataType(str):    str=str.strip()    if len(str) == 0: return 'BLANK'    try:        t=ast.literal_eval(str)    except ValueError:        return 'TEXT'    except SyntaxError:        return 'TEXT'    else:        if type(t) in [int, long, float, bool]: if t in set((True,False)):     return 'BIT' if type(t) is int or type(t) is long:     return 'INT' if type(t) is float:     return 'FLOAT'        else: return 'TEXT'testSet=['   1  ', ' 0 ', 'True', 'False',   #should all be BIT         '12', '34l', '-3','03',   #should all be INT         '1.2', '-20.4', '1e66', '35.','-   .2','-.2e6',      #should all be FLOAT         '10-1', 'def', '10,2', '[1,2]','35.9.6','35..','.']for t in testSet:    print "{:10}:{}".format(t,dataType(t))

输出:

   1      :BIT 0        :BITTrue      :BITFalse     :BIT12        :INT34l       :INT-3        :INT03        :INT1.2       :FLOAT-20.4     :FLOAT1e66      :FLOAT35.       :FLOAT-   .2    :FLOAT-.2e6     :FLOAT10-1      :TEXTdef       :TEXT10,2      :TEXT[1,2]     :TEXT35.9.6    :TEXT35..      :TEXT.         :TEXT

如果您肯定要有一个产生相同结果的正则表达式解决方案,那么这里是:

def regDataType(str):    str=str.strip()    if len(str) == 0: return 'BLANK'    if re.match(r'True$|^False$|^0$|^1$', str):        return 'BIT'    if re.match(r'([-+]s*)?d+[lL]?$', str):         return 'INT'    if re.match(r'([-+]s*)?[1-9][0-9]*.?[0-9]*([Ee][+-]?[0-9]+)?$', str):         return 'FLOAT'    if re.match(r'([-+]s*)?[0-9]*.?[0-9][0-9]*([Ee][+-]?[0-9]+)?$', str):         return 'FLOAT'    return 'TEXT'

我不能推荐ast版本的正则表达式。只是让Python解释它认为这些数据类型是什么,而不是使用正则表达式来解释它们…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号