【发布时间】:2016-10-23 16:27:59
【问题描述】:
我有以下代码,仅当“engg_buildinfo”中存在的所有构建位置都与“prod_buildinfo”匹配时,我尝试将“build_info_match”设置为True,目前我相信我遇到了错误,因为prod_buildinfo是一个字符串而不是字典,如何从prod_buildinfo获取对应的构建位置?
代码:-
prod_buildinfo = """|h6. {color:blue} Meta Build{color}|{color:blue}MSM1234.LA.1.9{color}|{color:blue}\\flower\location721\INTEGRATION\CI_MSM1234.LA.1.9-116391-STD.INT-2{color}|
|h6. {color:green}MSM1234{color}|
|h6. GLUE|GLUE.MSM1234.2.0|\\bigelow\zipbuild261\INTEGRATION\GLUE.MSM1234.2.0-00010.1-NOOP_TEST-1|
|h6. PASS|LA.HB.1.3.9|\\flower\location674\INTEGRATION\CI_LA.HB.1.3.9-19602-8x96.1-5|
|h6. MOD|MPSS.TH.2.0.2|\\flower\location678\INTEGRATION\MPSS.TH.2.0.2-00089-M1234FAAAANAAM-1|
|h6. BOOT|BOOT.XF.1.0|\\flower\location675\INTEGRATION\BOOT.XF.1.0-00297-M1234LAB-1|
|h6. TZ|TZ.BF.4.0.1|\\flower\location781\INTEGRATION\TZ.BF.4.0.1-00235-M1234AAAAANAAT-1|
|h6. ADSP|ADSP.1234.2.7.1|\\flower\location714\PROD\ADSP.1234.2.7.1-00121-00355-1|
|h6. SLPI|SLPI.HB.1.0|\\flower\location692\INTEGRATION\SLPI.HB.1.0-00277-M1234AAL-1|
|h6. RPM|RPM.BF.1.6|\\flower\location673\TEST\RPM.BF.1.6-00148-M1234AAAAANAAR-1|
|h6. WIR|WIR.RM.4.3|\\flower\location781\INTEGRATION\WIR.RM.4.3-00092-QCARMSWP-1|
|h6. BF|BF.RM.4.3|\\flower\location698\INTEGRATION\BF.RM.4.3-00022-QCABFSWP-1|
|h6. VIDEO|VIDEO.VE.4.2|\\flower\location682\PROD\VIDEO.VE.4.2-00018-PROD-1|
|h6. CPE_V2|CPE.TSF.2.0|\\flower\location670\INTEGRATION\CPE.TSF.2.0-00003-W9335AAAAAAAAQ-1|
|h6. GI|GI.SPR.1.0|\\nickle\zipbuild165\INTEGRATION\GI.SPR.1.0-10011-GISW-1|
|h6. UNKNOWN|WIR.ADDON_RM.3.0|\\nickle\zipbuild193\PROD\WIR.ADDON_RM.3.0-00013-CNSS_RMZ_WAPI-1|"""
engg_buildinfo = {'TZ':'\\gromit\location1\fw.861','PASS':'\\gromit\apps\pass.61'}
build_info_match = False
for key in engg_buildinfo :
engg_buildinfo['key'] = prod_buildinfo['key']
#all the build locations in dict match with buildinfo locations
build_info_match = True
print build_info_match
输出:-
Traceback (most recent call last):
File "buildinfo.py", line 27, in <module>
engg_buildinfo['key'] = prod_buildinfo['key']
TypeError: string indices must be integers, not str
【问题讨论】:
-
第一个错误是您正在检查 egg_buildinfo['key'] 而它必须是不带单引号的 egg_buildinfo[key],接下来您还没有解析任何字典 - prod_buildinfo 是一个字符串,而不是包含与 egg_buildinfo 中的键相同的键的字典。首先使用正则表达式从字符串中提取字典,然后您可以开始比较结果字典中是否存在合法的关键字。
-
感谢 dmitryro - 您能否提供一些关于如何使用正则表达式从字符串中提取字典的指导
-
关于如何将字符串(某些格式注意事项适用)转换为字典 - 请参阅 stackoverflow.com/questions/13675942/converting-string-to-dict 和 codereview.stackexchange.com/questions/106719/… 中的一些示例。关于如何评估正则表达式并使用文字、元字符等形成它们...查看docs.python.org/2/library/re.html、docs.python.org/2/howto/regex.html
-
除了正则表达式还有其他方法吗?对于这种情况,正则表达式似乎非常复杂
-
如果您知道要删除哪个字符串,可以将其替换为空字符串,如tutorialspoint.com/python/string_replace.htm
标签: python dictionary