删除以字符开头,后跟某个值的列表项

时间:2018-04-30 13:22:35

标签: python list

我正在遍历很多文件夹并提取文件夹的名称,因为我稍后会使用它。但是,大多数文件夹中都有一些奇怪的单词,我以后不需要这些单词。例如,文件夹名称可以是930_930_MRTY_2018-30-04_091_FIX_F.42_n1__00001。这就是大多数文件夹名称的方式。因此,如果我使用split("_"),我可以将这些字符串分开一点。但是,我不需要进一步使用的一件事是n##字符串。

因此,我可以使用以下内容:

filter_words = [".", "", "n1"]
folder_name_info = [word for word in y.split("_") if word not in filter_words]

获取没有我不喜欢的东西的列表。对于此示例,这会从列表中正确删除n1,但情况是,n之后的数字非常随机。那么我该如何绕过它来定位所有以n后跟任何数字的字符串?

1 个答案:

答案 0 :(得分:0)

我还没有使用正则表达式操作超级好,但是解决它的方法就是这样:

import re

filter_words = [".", ""]
folder_name_info = [word for word in y.split("_")
                      if (word not in filter_words and
                          not re.search('^n[1-9]')]

此处'^n[1-9]'表示以n开头,后跟任意数字的字符串。您还可以查看documentation on regex以了解如何使用它们。