Python 检查输入是否在URL列表中

Python 检查输入是否在URL列表中,python,python-3.x,list,web-crawler,data-science,Python,Python 3.x,List,Web Crawler,Data Science,我在尝试将用户输入与列表匹配时遇到一些问题。 我希望python能够抓取用户输入的内容,例如:旅行;它将输入与列表中的第一个索引相匹配,因为它包含“旅行”。如果用户键入:“神秘”,它将抓取第二个链接并返回true 代码示例: url\u链接=[ 'http://books.toscrape.com/catalogue/category/books/travel_2/index.html', 'http://books.toscrape.com/catalogue/category/books/

我在尝试将用户输入与列表匹配时遇到一些问题。 我希望python能够抓取用户输入的内容,例如:旅行;它将输入与列表中的第一个索引相匹配,因为它包含“旅行”。如果用户键入:“神秘”,它将抓取第二个链接并返回true

代码示例:

url\u链接=[
'http://books.toscrape.com/catalogue/category/books/travel_2/index.html', 
'http://books.toscrape.com/catalogue/category/books/mystery_3/index.html'
]
u_input=input(“您希望列出哪种类型的书籍?”)
我试过:

  • 如果有(u_input.lower()中的url_链接中的s):#这将给出false
  • 如果url链接中的u_input.lower():#这也会给出一个false。

  • 谢谢大家!

    您要查找的正确的
    if
    语句是这样的-它检查用户的小写输入是否在列表中的任何URL中:

    if any(u_input.lower() in url for url in url_links):
    
    下面的语句并不是在做你想做的事情——它在检查用户输入的每个字符是否都是URL列表中的URL。除非您有一个长度为一个字符的URL,并且用户输入了相同的字符,否则将永远不会返回true:

    if any(s in url_links for s in u_input.lower()):
    
    此语句也不正确,因为它检查用户的整个输入是否为URL,而不是是否在URL内:

    if u_input.lower() in url_links:
    

    因此,在您的第一个示例中有一个小错误。 您需要检查您的链接列表元素是否包含您的输入字符串

    if any(s in url_links for s in u_input.lower()): #this gives false
    
    你在做相反的事情。您正在检查输入字符串是否存在于链接列表中

    以下是正确的方法:

     if any(u_input.lower() in link for link in url_links):
    
    但实际上,我认为,这不是完成任务的正确方式。
    因为如果我将“a”作为输入而不是“神秘”传递,那么对于上述条件,它将是真的。我建议您解析链接并从中提取必要部分(您可以使用它)。

    请提供预期的内容。显示中间结果与您预期的不同之处。我们应该能够复制并粘贴一个连续的代码块,执行该文件,再现您的问题,并跟踪问题点的输出。@Prune此问题还可以添加哪些内容?这对我来说似乎很清楚,我能够用提供的所有信息来回答它。就像我在上面发布的一样。最直接的问题是OP让我们键入测试数据。@Prune我不必键入测试数据,从他们提供的两个
    if
    语句中可以清楚地看出,从逻辑上讲,这不是他们所要求的。他们清楚地提供了他们正在寻找的用例,展示了他们的尝试,并解释了这些尝试返回的结果是错误的。我想不出他们还能提供什么有帮助的。