[英]Searching for string in a list of lists
我一直在尝试向我的代码添加一个函数,该函数允许用户在列表列表中搜索某些关键字。 它仅在输入与元素相同时才有效,但我希望显示包含输入的每个元素。
infil = open("books.txt" , "r")
books_string = infil.read()
infil.close()
books_li = books_string.splitlines()
books_li.sort()
li_to_present= []
for element in books_li:
parts = element.split(",")
li_to_present.append(parts)
user_in = input("Search: ")
matches = [x for x in li_to_present if user_in in x]
示例:列表li_to_present
是:
['Birgitta Trotzig', ' Dykungens dotter'], ['Bo Giertz', ' Stengrunden']
如果用户输入是"Birgitta"
它不会附加到新的匹配列表中
有没有人对这个问题有一个很好的解决方案?
import re
infil = open("books.txt" , "r")
books_string = infil.read()
infil.close()
books_li = books_string.splitlines()
books_li.sort()
li_to_present = []
for element in books_li:
parts = element.split(",")
li_to_present.append(parts)
user_in = input("Search: ")
matches = [x for x in li_to_present if re.search(user_in, x)]
在生成器上使用all()
函数,该函数生成用户输入是否在子列表的每个字符串中。
user_in = input("Search: ")
matches = [l for l in li_to_present if any(user_in in s for s in l)]
例如
>>> li_to_present = [['Birgitta Trotzig', ' Dykungens dotter'],
['Bo Giertz', ' Stengrunden']]
>>> user_in = input("Search: ")
Search: Birgitta
>>> matches = [l for l in li_to_present if any(user_in in s for s in l)]
>>> matches
[['Birgitta Trotzig', ' Dykungens dotter']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.