我有一个特定目录中的文件名列表,
list_files=[filename_ew1_234_rt,filename_ew1_456_rt,filename_ew1_78946464_rt]
我正在尝试使用re。按如下方式搜索此内容filtered_values=list(filter(lambda v:re.search('.*(ew1.rt)'),v),list_文件))
现在,当我打印过滤值时,它会再次打印整个文件名,我如何才能让它只打印文件名的某些部分
这里是我看到的
filename_ew1_234_rt
filename_ew1_456_rt
filename_ew1_78946464_rt
相反,我想
ew1_234_rt
ew1_456_rt
ew1_78946464_rt
我该怎么做?
或者如果所有的文件名都以同样的方式开始,你可以把它切片。
list_files=[filename_ew1_234_rt,filename_ew1_456_rt,filename_ew1_78946464_rt]
对于已筛选的列表_文件:打印(已筛选[9:])
filter()
返回满足lambda中设置的条件的元素列表,即返回true。如果条件返回No
,它将被解释为False
,但其他任何内容都是True
。你看到这里的问题了吗?re.search()返回一个匹配对象,它可能是也可能不是无,但此匹配对象不会是搜索的结果。
一种更简单、更好的方法就是:
import re
list_files = ["filename_ew1_234_rt", "filename_ew1_456_rt", "filename_ew1_78946464_rt"]
generated = [re.search(r'(ew1.+rt)', v) for v in list_files]
filtered = [i.group() for i in generated if i != None]
print(filtered)
您可以使用基本列表理解从每个元素获取搜索结果,如果找到了结果(即未None
),您可以将匹配对象分组以获取结果。
如果lambda返回true,那么filter将具有相同的值,而不是使用filter,您可以使用2进行理解和重新定义。匹配提取组1值。
import re
list_files = ["filename_ew1_234_rt", "filename_ew1_456_rt", "filename_ew1_78946464_rt", "test"]
res = [m.group(1) for file in list_files for m in [re.match(r".*(ew1.+rt)", file)] if m]
print(res)
输出
['ew1_234_rt', 'ew1_456_rt', 'ew1_78946464_rt']
注意模式ew1。rt
对于当前示例,也可以编写更具体的匹配下划线和数字的代码:
.*(_ew1_\d+_rt)$
请参阅Regex演示。
我想知道是否可以为AWS设置一个lambda函数,每当一个新的文本文件上传到s3 bucket时就会触发这个函数。在函数中,我想获取文本文件的内容,并以某种方式对其进行处理。我在想这有没有可能...? 例如,如果我上传了foo.txt,内容为foobarbaz,我希望在lambda函数中使用foobarbaz,这样我就可以用它来做一些事情。我知道我可以从getObject获取元数据,或者类似的方法
给定对象BusinessLog,我需要为列表中的所有奖品求和 我当然可以用forEach做,但如何用lambda做, 到目前为止,我一直试图做的是,
问题内容: 有没有一种简单的方法可以进入python函数并获取参数名称列表? 例如: 谢谢 问题答案: 好吧,我们实际上不需要这里。 对于Python 2.5及更高版本,请使用代替和代替。
问题内容: 我有一个视图t,其中有一个用于表名的列,另一个具有where子句条件的列。 等等… 现在,我将记录放在游标中,并且我想运行每个查询。 myTable是另一个表,我要将记录用于下一个目的。 问题答案: @Akshay, 请找到下面的代码以供参考。
问题内容: 但是我还需要知道: 如何在 Microsoft SQL Server (以我的情况为2008)中完成此操作? 问题答案: 您可以通过查询Information Schema视图获得此信息,甚至更多。 此示例查询:
我试图使用Java8流和lambda表达式仅从我的中提取数字。首先,我要做的是将字符串从文件加载到列表。之后,我过滤stream以获得包含“PL”的字符串。 我认为现在最好的方法是删除字符串中的所有字母,只保留小数,但我有问题应该怎么做。最终的结果应该让我将list的元素解析为integer,对它们进行排序,并得到前三个元素的和。我已经做过了,但我肯定有更好的方法来做(例如,只用一个列表) 有什么