Python:在筛选或搜索 str 列表时将范围应用于通配符(需要将任何没有 10 位数字的 str 列表项添加到列表中)

Python: apply a range to wildcard when filtering or searching a str list (need to add any str list item that doesn't have a 10-digit number to a list)

如果我有一个 Windows 文件路径(字符串)的列表,我将如何搜索文件路径中具有连续 10 位数字的所有列表对象——以添加到列表中?

是否可以定义通配符范围并搜索或应用过滤器?

示例:

来自此列表:

('C:\Users\ DocumentsH_1P_42497372610000\Kirkbride A1P_42497586550009\Well History.tif',
'C:\Users\ Documents\TEMPORARY\WISE497372610000\Kirkbride _42478972610009\ Drilling\Proposals.pdf',
'C:\Users\ Documents\Well History\Drilling\Proposals\Cement\Pilot hole KO plug\ Test Results.txt')

这将是我的新列表(或数据框):

('C:\Users\ DocumentsH_1P_42497372610000\Kirkbride A1P_42497586550009\Well History.tif',
'C:\Users\ Documents\TEMPORARY\WISE497372610000\Kirkbride _42478972610009\ Drilling\Proposals.pdf')

我尝试使用 glob() 函数进行了几次尝试,并尝试将过滤器与条件拼凑在一起,其中我定义了一个变量 'x' = ('1', '2', '3' . . .) 并过滤了 'x'+'x'+'x'+'x'+'x'+'x'+'x'+'x'+'x'+'x' 没有出现的项目。我只是无法将任何有意义的东西拼凑在一起,或者不是在搜索整数(这是行不通的)。

帮帮我!请谢谢!

您可以使用正则表达式查找包含 10 个连续数字的字符串:

In [63]: [i for i in strings if len(re.findall('\d{10}',re.escape(i)))>0]
Out[63]: 
['C:\Users\ Documents\1H_1P_42497372610000\Kirkbride A1P_42497586550009\Well History.tif',
 'C:\Users\ Documents\TEMPORARY\WISE\30497372610000\Kirkbride _42478972610009\ Drilling\Proposals.pdf']

您可能不需要 re.escape 调用,我不得不在 linux 上调用,因为转义字符解释了双反斜杠 '\\'。