使用python进行模式匹配

时间:2010-08-04 13:35:38

标签: python

在下面的代码中,如何匹配字典中“answer”和“nonanswer”之后的模式

opt_dict=(
    {'answer1':1,
     'answer14':1,
     'answer13':12,
     'answer11':6,
     'answer5':5,
     'nonanswer12':1,
     'nonanswer11':1,
     'nonanswer4':1,
     'nonanswer5':1,})

并且

if opt_dict:
    for ii in opt_dict:
        logging.debug(ii)
        logging.debug(opt_dict[ii])
        if ii in "nonanswer":
            logging.debug(opt_dict[ii])
        elif ii in "answer":
            logging.debug("answer founddddddddddddddddddddddddddddddd")
            logging.debug(opt_dict[ii])
        else:
            logging.debug("empty dict")        

2 个答案:

答案 0 :(得分:2)

我没有保留所有日志记录,但这应该有效:

if opt_dict:
    for key, value in opt_dict.items():
        if "nonanswer" in key:
            print "nonanswer", value
        elif "answer" in key:
            print "answer", value
        else:
            raise Exception( "invalid key" )
else:
    print "empty dict"

答案 1 :(得分:2)

我很确定您的in测试已被撤消。数据的格式为answer1,永远不会出现在文字answer中。请改为"answer" in ii

更具体地说,您可以使用startswith方法,因为您的所有数据(至少在此示例中)实际上都以answernonanswer开头,您可能不想要匹配34argleanswer形式的内容。