列表名称是磁盘及其下面: 磁盘
['5000cca025884d5\n', '5000cca025a1ee6\n']
文件名是p,下面是:
c0t5000CCA025884D5Cd0 solaris / scsi_vhci /磁盘@ g5000cca025884d5c
c0t5000CCA025A1EE6Cd0 / scsi_vhci /磁盘@ g5000cca025a1ee6c
c3t50060E8007DB981Ad1 / PCI @ 400 / PCI @ 1 / PCI @ 0 / PCI @ 8 / SUNW,emlxs @ 0 / FP @ 0,0 / SSD @ w50060e8007db981a,1
我想搜索文件
中列表的元素答案 0 :(得分:2)
这里有几件事要看:
之前我没有真正使用过 List<Integer> li = Arrays.asList(1, 3, 2, 4, 5, 8, 9);
IntStream.range(0, li.size() - 2)
.mapToObj(i -> li.stream().skip(i).limit(3))
.map(x -> x.sorted().skip(1).findFirst().get())
.forEach(System.out::println);
,但我可以看到第一个问题:re.match()
列表在每个条目后都有换行符,这样会搞乱匹配。此外,disks
仅匹配行的开头。您的行以数字开头,因此您需要使用re.match()
在行中搜索。最后,你应该使它不区分大小写;这个选项的一个选项是将所有内容都设为小写,就像re.search()
列表一样。
尝试调整你的循环:
disks
如果这不能解决问题,我会尝试在循环的每次迭代中打印出#.strip() will get rid of new lines and .lower() will make the string lowercase
for line in q:
if re.search(disks[0].strip(),line.lower()):
print line
和disks[0].strip()
(不仅仅是当它与if子句匹配时)以确保它正在读取你认为它是什么。