Python:如何检查字符串是否包含特定范围内的数字

2024-10-03 11:18:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一长串字符串;它们基本上是文件名。格式如下:

["abcdedf_023.txt",
 "foeoioo_011.txt", 
 "sdjskdsjd_3131.txt", 
 "dsdsdsrer_044.txt", 
 "rgfbfgrt_12.txt"]

等等。在

我需要的是过滤掉末尾包含大于15的数字的名称。因此,对于上述输入,期望输出将是:

^{pr2}$

这个数字(15)不是固定的,由用户作为输入提供。在


Tags: 字符串用户txt名称文件名格式数字末尾
2条回答

我会使用split

>>> l = ["abcdedf_023.txt",
"foeoioo_011.txt", 
"sdjskdsjd_3131.txt", 
"dsdsdsrer_044.txt", 
"rgfbfgrt_12.txt"]
>>> [i for i in l if int(i.split('.')[0].split('_')[-1]) > 15 ]
['abcdedf_023.txt', 'sdjskdsjd_3131.txt', 'dsdsdsrer_044.txt']

将上述列表理解中的15替换为实际包含要检查的数字的变量。。注意,变量的类型必须是integer或在条件检查期间将其转换为int。在

像下面这样?只需使用\d+搜索号码?在

[i for i in l if int(re.search('\d+', i).group(0)) > 15]

演示:

^{pr2}$

您还可以搜索_(\d+).txt(使用()来捕捉以下数字):

[i for i in f if int(re.search('_(\d+).txt', i).group(1)) > 15]

删除文件中的"abc122dedf_01.txt"之类的内容(如果您不需要的话)。在


如果文件名中只需要最后两个数字,例如get 03from{}:

[i for i in f if int(re.search('\d+', i).group(0)[-2:]) > 15]

相关问题 更多 >