繁体   English   中英

如何检查字符串是否在列表列表中,如果有则返回子列表?

[英]How do I check if a string is in a list of lists, and return the sublist if it is?

我需要检查变量是否在列表列表中,以及是否返回子列表。 我尝试了许多不同的解决方案,但是它们都不起作用...

我的代码:

addressList = [['JohnSmith', 'NR87TYH', 'PE26RE', '1EnglandRoad', '67'],['JaneSmithe', 'UY34DSF', 'SW147EG', '23SouthDrive', '82'], ['JimmyJones', 'PL20DCH', 'NW33EX', '145EastRidings', '54']]

numPlate = "UY34DSF"

for sublist in addressList:
    if numPlate in sublist:
        print("Ding dong the witch is dead!")

我应该在这里澄清一些事情。 “ addressList”变量是一个CSV文件,该文件被剥离到一个列表中,该列表如上所写显示。

这样做或其他15种左右的不同方法都没有用,但我认为这是最合理的逻辑。 我是否缺少明显的东西?

谢谢!

编辑:好的,所以感谢您的回答,这使我再次检查了代码中的所有内容,但仍无法正常工作,因此我将其复制并粘贴了下面的整个代码。

“ line1”从文件返回我想要的值。

“ reading2”按原样返回列表的列表。

由此看来,我最初提出的问题中包含的迭代应该可以正常工作,但不是吗? 有任何想法吗?

import csv

fopen = open("StandardUKReg.txt","r")
line1 = fopen.readline()
fopen.close()

with open("OwnerInfoCSV.csv", "r") as inf:
    reading2 = list(csv.reader(inf, skipinitialspace=True))

for sublist in reading2:
    if line1 in sublist:
        print("yay")


print(line1) # This displays "UY34DSF"

print(reading2) # This displays the below list of lists:

[['Name', 'Reg', 'Postcode', 'Address', 'Speed'], ['JohnSmith', 'NR87TYH', 'PE26RE', '1EnglandRoad', '67'], ['JaneSmithe', 'UY34DSF', 'SW147EG', '23SouthDrive', '82'], ['JimmyJones', 'PL20DCH', 'NW33EX', '145EastRidings', '54'], ['VinnyJones', 'TD53BFC', 'NG167YT', '95BirdRoad', '79'], ['ClarkKent', 'FH45NFH', 'SE89YG', '8NorthAvenue', '56']]

这将创建一个包含该字符串的所有列表的列表。

matching_lists = [ls for ls in addressList if numPlate in ls]

当您阅读例如line1时,它可能带有看不见的回车符或可能附加了空格。 通过例如打印line1的长度,或在其之前/之后打印一些内容来进行检查。 当然,这些不可见的字符将阻止line1与列表中的任何内容匹配。 使用strip()清理它,例如:

import string
line1 = string.strip(fopen.readline())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM