如何比较属性从$开始在2个函数和显示匹配或不匹配 [英] How to compare the attributes start with $ in 2 functions and display match or mismatch

查看:162
本文介绍了如何比较属性从$开始在2个函数和显示匹配或不匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的输入文件包含属性

        if(match($OPTION_EnableDetails, "1") or match($OPTION_EnableDetails_juniper, 
   "1")) {
            details($juniFileXferStatus,$juniFileXferTimeStamp,$juniFileXferIndex)
        }
        @ExtendedAttr = nvp_add(@ExtendedAttr, "juniFileXferStatus", 
    $juniFileXferStatus, "juniFileXferTimeStamp", $juniFileXferTimeStamp, 
  "juniFileXferIndex",
 $juniFileXferIndex)

在我的输入文件中有很多情况,我如何比较所有的实例以$开头的细节和实例从$在nvp_add这里开始?

I got lot of cases in my input file, How can i compare all instances start with $ in details and instances start with $ in nvp_add here?

推荐答案

import re


caselines_index = []
cases = []
readlines = []

def read(in_file):
  global cases
  global caselines_index
  global readlines
  with open(in_file, 'r') as file:
    for line in file.readlines():
      readlines.append(line.strip())
    for line in readlines:
      case_search = re.search("case\s\".+?\"\:\s", line)
      if case_search:
        caselines_index.append(readlines.index(line))
    #print caselines_index
    caselines_index_iter = iter(caselines_index)
    int_line_index = int(next(caselines_index_iter))
    int_next_index = int(next(caselines_index_iter))
    while True:
      try:
        case_text = ' '.join(readlines[int_line_index:int_next_index]).strip()
        case = [readlines[int_line_index].strip(), case_text]
        cases.append(case)
        int_line_index = int_next_index
        int_next_index = int(next(caselines_index_iter))
      except StopIteration:
        case_text = ' '.join(readlines[int_line_index:len(readlines) - 1]).strip()
        case = [readlines[int_line_index].strip(), case_text]
        cases.append(case)
        break

def work():
  MATCH = 1
  for case_list in cases:
    details = []
    nvp_add = []
    caseline = case_list[0].strip()
    nvp = re.findall("details\(.+?\)", case_list[1].strip())

    for item in nvp:
      result_list = re.findall("(\$.+?)[\,\)]", item)

      for result in result_list:
        if "$*" not in result:
          details.append(result)

    nvp = re.findall("nvp_add\(.+?\)", case_list[1].strip())

    for item in nvp:
      result_list = re.findall("(\$.+?)[\,\)]", item)

      for result in result_list:
        if "$*" not in result:
          nvp_add.append(result)

    missing_from_details, missing_from_nvp_add = [], []
    missing_from_details = [o for o in nvp_add if o not in set(details)]
    missing_from_nvp_add = [o for o in details if o not in set(nvp_add)]
    if missing_from_nvp_add or missing_from_details:
      MATCH = 0
      print caseline + "   LINE - " + str(readlines.index(caseline) + 1)
      for mismatch in missing_from_details:
        print "Missing from details:"
        print mismatch
      for mismatch in missing_from_nvp_add:
        print "Missing from nvp_add:"
        print mismatch
      print "\n"
  if MATCH == 1:
    print "MATCH"
  else:
    print "MISMATCHES"


def main():
  in_file = "target1.txt"
  read(in_file)
  work()


if __name__=="__main__":
  main()

如果我理解正确,这是

这篇关于如何比较属性从$开始在2个函数和显示匹配或不匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆