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

2024-05-19 09:47:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要检查变量是否在列表列表中,如果是,则返回子列表。我试过很多不同的解决办法,但都不管用。。。你知道吗

我的代码:

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']]

Tags: csv代码in列表printline1fopensublist
2条回答

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

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

这将创建包含该字符串的所有列表的列表。你知道吗

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

相关问题 更多 >

    热门问题