【问题标题】:Python: how to find the element in a list which match part of the name of the elementPython:如何在列表中找到与元素名称的一部分匹配的元素
【发布时间】:2017-10-23 13:04:38
【问题描述】:

我有一个要从文件名列表中查找的关键字列表。例如,如果关键字是'U12',我想找到包含'U12'的csv文件,即'h_ABC_U12.csv'并打印出来。

word = ['U12','U13','U14']
file_list = ['h_ABC_U12.csv','h_GGG_U13.csv','h_HVD_U14.csv','h_MMMB_U15.csv']

for x in range (len(word)):
    if word[x] in file_list:
       #print the file name

这是代码的一部分,但经过一些搜索后无法继续。 我需要与单词匹配的全名才能打印出来。

【问题讨论】:

    标签: python list csv


    【解决方案1】:

    我建议使用os.path.splitext 来获取不带扩展名的文件名。

    >>> from os.path import splitext
    >>> for f in file_list:
    ...     name = splitext(f)[0]
    ...     if any(name.endswith(tail) for tail in word):
    ...         print(name)
    ... 
    h_ABC_U12
    h_GGG_U13
    h_HVD_U14
    

    【讨论】:

      【解决方案2】:

      试试这个 -

      for w in word:
           for file in file_list:
               if w in file:
                   print file
      

      【讨论】:

        【解决方案3】:

        您可以尝试使用列表推导:

        word = ['U12','U13','U14']
        file_list =['h_ABC_U12.csv','h_GGG_U13.csv','h_HVD_U14.csv','h_MMMB_U15.csv']
        
        print [i for i in file_list for b in word if b in i]
        

        【讨论】:

          【解决方案4】:

          确实

          for x in range(len(word)):
              for file in file_list:
                  if x in file:
                      print file
          

          会做这项工作吗?

          【讨论】:

            【解决方案5】:

            这应该会更好:

            for file_name in file_list:
                the_word = next((w for w in word if w in file_name), None)
                if the_word:
                    print the_word
                    print file_name
            

            或者获取所有文件名的列表:

            [file_name for file_name in file_list if next((w for w in word if w in file_name), None)]
            

            【讨论】:

              【解决方案6】:
              word = ['U12','U13','U14']
              file_list = ['h_ABC_U12.csv','h_GGG_U13.csv','h_HVD_U14.csv','h_MMMB_U15.csv']
              
              for file_name in file_list:
                for w in word:
                  if w in file_name:
                    print(w,file_name)
              

              结果

              U12 h_ABC_U12.csv
              U13 h_GGG_U13.csv
              U14 h_HVD_U14.csv
              

              【讨论】:

                猜你喜欢
                • 2021-09-16
                • 1970-01-01
                • 2015-03-22
                • 1970-01-01
                • 2017-08-05
                • 2018-04-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多