Python如何筛选包含连续10位数字的Windows文件路径字符串列表
实现方案
可以通过正则表达式完成该过滤需求,相比通配符适配性更强,可灵活匹配任意规则的连续字符。
1. 普通Python列表处理
核心逻辑是用正则模式\d{10}匹配任意连续10位数字,代码示例:
import re # 你的输入路径列表,注意Windows路径建议加r前缀避免转义问题 path_list = [ r'C:\Users\ Documents\1H_1P_42497372610000\Kirkbride A1P_42497586550009\Well History.tif', r'C:\Users\ Documents\TEMPORARY\WISE\30497372610000\Kirkbride _42478972610009\ Drilling\Proposals.pdf', r'C:\Users\ Documents\Well History\Drilling\Proposals\Cement\Pilot hole KO plug\ Test Results.txt' ] # 定义匹配规则:连续10位数字 pattern = re.compile(r'\d{10}') # 过滤得到符合要求的列表 filtered_list = [path for path in path_list if pattern.search(path)]
执行后filtered_list就是你需要的输出结果。
2. Pandas DataFrame处理
如果你的数据存在DataFrame中,可直接用str.contains方法过滤:
import pandas as pd # 假设你的路径存在df的path列 df = pd.DataFrame({'path': path_list}) filtered_df = df[df['path'].str.contains(r'\d{10}', regex=True)]
方案说明
- 之前用
glob失败的原因是glob通配符仅支持基础的*、?等匹配,无法精准指定连续数字的位数 - 手动拼接字符的方法只能匹配固定的连续字符,无法覆盖0-9所有数字的场景
- 如果后续需要修改匹配规则,只要调整正则表达式即可:比如要匹配连续10位非空白字符,把模式改成
\S{10}即可,适配非整数搜索场景。
内容的提问来源于stack exchange,提问作者cowboykevin05
相关产品推荐
相关产品推荐

