如何比较属性从$开始在2个函数和显示匹配或不匹配 [英] How to compare the attributes start with $ in 2 functions and display match or mismatch
本文介绍了如何比较属性从$开始在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屋!
查看全文