在python中从文件名字符串提取数字

在python中从文件名字符串提取数字,python,parsing,Python,Parsing,我在一个目录中有许多html文件。我正在尝试将文件名存储在一个列表中,以便稍后使用它与另一个列表进行比较 例如:Prod224\u 0055\u 00007464\u 20170930.html是文件名之一。我想从文件名中提取“00007464”并将该值存储在列表中,然后对目录中的所有其他文件重复相同的操作。我该怎么做呢?我是Python新手,非常感谢您的帮助 如果您需要更多信息来回答此问题,请告诉我。您可以尝试此方法(假设您位于包含以下文件的文件夹中): import os num_list

我在一个目录中有许多html文件。我正在尝试将文件名存储在一个列表中,以便稍后使用它与另一个列表进行比较

例如:
Prod224\u 0055\u 00007464\u 20170930.html
是文件名之一。我想从文件名中提取“00007464”并将该值存储在列表中,然后对目录中的所有其他文件重复相同的操作。我该怎么做呢?我是Python新手,非常感谢您的帮助

如果您需要更多信息来回答此问题,请告诉我。

您可以尝试此方法(假设您位于包含以下文件的文件夹中):

import os

num_list = []

r, d, files = os.walk( '.' ).next()
for f in files :
    parts = f.split('_')   # now `parts` contains ['Prod224', '0055', '00007464', '20170930.html']
    print parts[2]         # this outputs '00007464'
    num_list.append( parts[2] )

假设您的文件具有特定模式,则可以使用正则表达式:

>>重新导入
>>>s='Prod224_0055_00007464_20170930.html'
>>>所需数量=re.findall(“\d+”,s)[2]
>>>所需数量
'00007464'
使用正则表达式不仅可以帮助您获取所需的特定数字,还可以获取文件名中的其他数字


如果您的文件名遵循模式“[some text][number][number][number][desired\u number][a date].html”,这将起作用。获取数字后,我认为使用
append
方法将该数字添加到您想要的任何列表中非常简单。

将文件名拆分为下划线,然后选择第三个元素(索引2)

在这样的上下文中:

nums = [f.split('_')[2] for f in os.listdir(dir) if f.endswith('.html')]

你有文件名的模式吗?另外,如果文件名的公式更复杂,你可能可以使用正则表达式,但你需要在问题中添加更多细节。非常感谢!它起了作用,我将继续使用正则表达式,但现在这个列表理解似乎起到了作用。
os.walk('.')。next()
应该是
next(os.walk('.')
,不是吗?哦,哎呀,我不知道Python2中存在这个方法。Python3中没有。
nums = [f.split('_')[2] for f in os.listdir(dir) if f.endswith('.html')]