下面的代码从List
srchlist中提取一个特定值,并检查List rplzlist中的特定值。 list srchlist和rplzlist的内容如下所示。
srchlist = ["DD='A'\n", "SOUT='*'\n", 'PGM=FTP\n', 'PGM=EMAIL']
rplzlist = ['A=ZZ.VVMSSB\n', 'SOUT=*\n', 'SALEDB=TEST12']
我使用strip
和translate
的组合在' ='(相等)符号后面和单引号内提取字符功能。
srchlist中的元素只有' SOUT'与rplzlist匹配。
请告诉我为什么以下代码不起作用,还建议我更好地比较string
中存在的list
的一部分。
for ele in srchlist:
sYmls = ele.split('=')
vAlue = sYmls[1].translate(None,'\'')
for elem in rplzlist:
rPls = elem.split('=')
if vAlue in rPls:
print("vAlue")
答案 0 :(得分:0)
以下是您想要做的更加pythonic的方法:
>>> list(set([(i.split('='))[1].translate(None,'\'') for i in srchlist]) & set([j.split('=')[1] for j in rplzlist]))
['*\n']
我使用set()
,然后将整个输出设为list
,您可以使用.join()
。
在set()
内,给出了列表理解,它比正常的循环更快。
使用join()
和replace()
取代translate()
的另一种解决方案:
>>> "".join(set([(i.split('='))[1].replace('\'','') for i in srchlist]) & set([j.split('=')[1] for j in rplzlist]))
'*\n'