如何在比较两个列表时忽略'\ n'
问题描述:
我有两个列表。我想检查一个列表是否是其他列表的子集。如何在比较两个列表时忽略' n'
list1 = ['12345678\n', '87654321']
list2 = ['','12345678', '87654321', '23456789']
问题是我的第一个列表即列表1将始终包含\ n因为我从具有单独的lines.But项目(S)的文件读取它,我想忽略这个\ n并继续比较。我的下面的代码总是进入,否则部分。有没有办法让True方案不修改两个列表? 我下面的代码:
flag = True # Initialized value of flag to default 'True' at beginning
for val in list1:
if val not in list2:
flag = False
if flag == True
.... # Do some operation if flag is 'True'
....
else
print 'list1 is not a subset of list2'
答
您可以使用strip
剥离了所有的空格字符,然后比较,为在第二列表中的项目。此外,您还可以用all
取代你的for循环:
>>> all(e.strip() in list2 for e in list1)
True
此外,你可能会认为,当你创建list1
剥离换行符,并使用set
而不是list
加快查找。
>>> set(map(str.strip, list1)).issubset(list2)
True