引用为列表元素时无法识别字符串



我需要检查第一个列表中的哪些元素出现在第二个列表中。

首先,我通过添加元素来创建这两个列表,

my_file = open("/nfs/pic.es/user/c/cperez/pnfsid_type2_unclassified.txt", "r")
with open('/nfs/pic.es/user/c/cperez/pnfsid_type2_unclassified_short.txt') as f:
unclassified = f.read().splitlines()
fullpaths = open("/nfs/pic.es/user/c/cperez/path_oct_nov.out", "r")
with open('/nfs/pic.es/user/c/cperez/path_oct_nov.out') as f2:
full_paths = f2.read().splitlines()

然后,我运行所有的"full_paths"索引,以检查元素"unclassified[4]"(str-type(是否在"full_path"中

N=len(unclassified)
M=len(full_paths)
print(unclassified[4])

输出:

SusyAnalysis

如果我把它称为列表元素,它不会匹配,


for j in range(0,M):
if unclassified[4] in full_paths[j]:
print(i,j,'yes')

但将其称为字符串,它是"SusyAnalysis",工作正常,


print(unclassified[4])
for j in range(0,M):
if 'SusyAnalysis' in full_paths[j]:
print(i,j,'yes')

输出:

SusyAnalysis
0 658062 yes
0 759090 yes
0 989630 yes
0 1004369 yes
0 1236539 yes
0 1421179 yes

我怀疑主要问题是在主非机密列表中字符串之间的空白处

['  zabai.bde389f10d8fd3aed35fae28c5265f4b9505fab2', '  crab_92X_newL1_RegForVBF_ThreeJets_allTauCombinations_HLTPhysics1', '  CITo2Mu_M2000_CUETP8M1_Lam16TeVConLL_13TeV_Pythia8_Corrected-v3', '  2018-06-19_DevTools_80X_Hpp_v1', '  SusyAnalysis', '  ZprimeToBBbar_M_2500', '  monoZ_2016_data_two_Lepton_final', '  XeXe2017_default_98_4', '  memOutput_CarmenTrial4_28Aug2017', '  v6_SM']

为什么它不能被识别为字符串列表元素?或者与列表元素之间的空格有关?

问题是字符串中的空白,' SusyAnalysis''SusyAnalysis'不同。要解决此问题,您可以剥离if语句中的列表项:

for j in range(0,M):
if unclassified[4].strip() in full_paths[j]:
print(i,j,'yes')

最新更新