主题:
两种把数据分割的方式:“字符串输入”以及“json输入”
“pycharm中相同代码段的同时高亮”的实现效果
高亮
首先介绍如何实现下图效果,动作是“双击某字段,整页中与其相同的各处都会高亮”:
![image-20230725213539444](https://img2023.cnblogs.com/blog/3232290/202307/3232290-20230725224503981-564283513.png)
![image-20230725213856686](https://img2023.cnblogs.com/blog/3232290/202307/3232290-20230725224504588-314698192.png)
输入方式
总括
处理逻辑类似,都会先检查输入字符串的形式,然后根据关键字选择相应的处理方法。对于JSON输入,它还会检查关键字是否匹配,以GZM为例展示一个二者的例子:
def Ini_Gzm(self, str): # 函数的定义以及接受参数str,str是要处理的
if str == '': # 对str进行赋值
str1_1 = '{"Keyword":"GZM",' \
'"S_No":"16",' \
'"S_Name":"12011",' \
'"S_mc_name":"二煤",' \
'"S_Cg_h":4.5,' \ # 此间省略若干数据...
'}'
# str1 = '{"S_No":"16",' \
# '"S_Name":"12011",' \
# '"S_mc_name":"二煤",' \ # ...
# '}'
str1_2 = '{"Keyword":"GZM_D",' \
'"S_No":"5",' \
'"S_Name":"2902",' \ # ...
'}'
str2_1 = "GZM:16,12011,二煤,4.5,综采,0,3.4,600,214,1640,100,1,25,20000,0.3,2,3"
str2_2 = "GZM_D: 5, 2902, 4, 2.6, 3, 2.4, 12, 5, 470, 550, 510, 300, 650, 3, 1, 2, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 100"
str = str2_1
# 开始分类讨论,如果输入的字符串是以花括号开头结尾,表明是JSON输入方法;如果以 'GZM' 开头则反之
if str.startswith("{") and str.endswith("}"):
# 第一种,json输入方法
if not self.Ex_Gzm.Base_Input(str): sys.exit()
if self.Ex_Gzm.Keyword == 'GZM':
self.Ex_Gzm.S_Input(str) # "Keyword" 是 'GZM',则跳到Ex_Gzm.S_Input(str),并返回 True
return True
elif self.Ex_Gzm.Keyword == 'GZM_D':
self.Ex_Gzm.ES_Input(str) # 'GZM_D',则调用Ex_Gzm.ES_Input(str),
return True
else:
self.warning.append('GZM拼写错误或缺失;') # 不是 'GZM' 或 'GZM_D',则在 warning添加'GZM拼写错误或缺失'返回 False。
return False
else:
# 第二种,字符串输入方法
if str.startswith('GZM'):
self.Ex_Gzm.Keyword = 'GZM'
self.Ex_Gzm.S2_Input(str)
return True
else:
self.warning.append('GZM拼写错误;')
return False
接下来以 支架Zj 为例详细看两种方式:
![image-20230725222709946](https://img2023.cnblogs.com/blog/3232290/202307/3232290-20230725224505981-1238090748.png)
关于支架的GuideUnit内代码:
def Ini_Zj(self, str):
if str == '':
str1_1 = '{"Keyword":"ZJ",' \
'"Zj_Name":"综采",' \
'"Zj_XingHao":"ZY13000/25/50",' \
# ...省略多组数据
'}'
str2_1 = "ZJ:综采,ZY13000/25/50,1.75,5,2.6,2,2.5,13000,1.46,2,0.5"
# 如果 str 参数为空则会初始化一个JSON格式的字符串 str1_1,以及一个字符串变量 str2_1 , 下面先试验1_1 ;
str = str1_1
if str.startswith("{") and str.endswith("}"): # 首先,它检查输入字符串是否以“{”开头和“}”结尾,以确定是否是一个JSON格式的字符串。
# 第一种,json输入方法
if not self.Ex_Zj.Base_Input(str): sys.exit() # 调用Input处理JSON输入。成功则返回True,否则退出程序。
if self.Ex_Zj.Keyword == 'ZJ':
self.Ex_Zj.Zj_Input(str)
return True # 检查Keyword是否为“ZJ”。是则调用Input处理输入字符串,并返回True
else:
self.warning.append('ZJ拼写错误或缺失;')
return False # 如果Keyword不是“ZJ”,说明ZJ拼错或缺失,加到warning中,返回False。
else:
# 第二种,字符串输入方法
if str.startswith('ZJ'):
self.Ex_Zj.Keyword = 'ZJ'
self.Ex_Zj.Zj2_Input(str)
return True
else:
self.warning.append('ZJ拼写错误;')
return False
最后是输出环节:
![image-20230725224422970](https://img2023.cnblogs.com/blog/3232290/202307/3232290-20230725224506702-1599294849.png)