• python eval() 进行条件匹配


    最近开发一个功能,根据条件表达式过滤数据,其中用到了eval(条件字符串,字典)

    发现一个现象:

    >>> print u"campGrade in [ 'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed', ]"
    campGrade in [ '减脂体验班', ]

    >>> print {'campGrade':u'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed'}
    {'campGrade': u'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed'}

    >>> print u'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed'
    减脂体验班

    此时,若直接判断,会返回 False

    >>> eval(u"campGrade in [ 'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed', ]", {'campGrade':u'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed'})
    <string>:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
    False

    字典中的unicode 需要转化成 str,如下:

    >>> eval(u"campGrade in [ 'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed', ]", {'campGrade':'减脂体验班'})
    True

    代码中可以添加.encode("utf-8"),将unocode转换成str形式!

    >>> eval(u"campGrade in [ 'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed', ]", {'campGrade':u'u51cfu8102u8425u6559u7ec3u4f53u9a8cu73ed'.encode("utf-8")})
    True

  • 相关阅读:
    5月13日工作日志(需求规格说明书4.0)
    第十次会议
    5月21日日志
    5月12日工作日志
    关于游戏平衡性——王者荣耀英雄伤害数值参考
    每天一点新东西(1)
    我在都匀做网优(补)
    我在都匀做网优
    不算新的开始
    input的focus事件时,鼠标光标在最后
  • 原文地址:https://www.cnblogs.com/yuzhaoblog/p/8372971.html
Copyright © 2020-2023  润新知