【问题标题】:How to check for part of a string within a list?如何检查列表中字符串的一部分?
【发布时间】:2015-07-15 16:49:45
【问题描述】:

在列表中检查部分字符串的最有效方法是什么?

例如,假设我在以下列表中查找“4110964_se”(真)或“4210911_sw”(假):

files = ['H:\\co_1m_2013\\41108\\m_4110864_se_12_1_20130717.tif',
         'H:\\co_1m_2013\\41108\\m_4110864_sw_12_1_20130717.tif',
         'H:\\co_1m_2013\\41109\\m_4110964_se_12_1_20130722.tif']

如果我使用简单的检查,结果不是我所期望的:

>>> "4110964_se" in files
False

【问题讨论】:

    标签: python string list


    【解决方案1】:
    any('4110964_se' in f for f in files) # check if the string is in any of the list items
    

    【讨论】:

      【解决方案2】:

      Malik Brahimi 的回答有效,但另一种方法是将文件放入这样的 for 循环中:

      for f in files:
          print "4110964_se" in f
      

      您的解决方案不起作用的原因是它只查找具有确切值“4110964_se”的项目,而不是查看每个字符串以查看该值是否在任何字符串中的任何位置。例如,如果你这样做了:

      print "H:\\co_1m_2013\\41108\\m_4110864_se_12_1_20130717.tif" in files
      

      它会打印 True,因为你给了它完整的文件名,而不仅仅是它的一部分

      【讨论】:

        【解决方案3】:

        你可以使用:

        for x in files:
            if '4110964_se' in x:
                bool('4110964_se')
        

        打印出来:

        True 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-15
          • 1970-01-01
          • 1970-01-01
          • 2012-12-31
          • 2018-06-06
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          相关资源
          最近更新 更多