我在目录中有许多html文件。我正在尝试将文件名存储在一个列表中,以便以后可以将其与另一个列表进行比较。
例如:Prod224_0055_00007464_20170930.html
是文件名之一。从文件名中,我要提取“ 00007464”并将此值存储在列表中,并对目录中的所有其他文件重复相同的操作。我该怎么做呢?我是Python的新手,我们将不胜感激!
如果您需要更多信息来回答问题,请告诉我。
答案 0 :(得分:0)
您可以尝试执行此操作(假设您位于包含以下文件的文件夹中:
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] )
答案 1 :(得分:0)
假设文件具有某种模式,则可以使用正则表达式:
>>> import re
>>> s = 'Prod224_0055_00007464_20170930.html'
>>> desired_number = re.findall("\d+", s)[2]
>>> desired_number
'00007464'
使用正则表达式不仅可以帮助您获取所需的特定编号,还可以帮助您获取文件名中的其他编号。
如果文件名遵循“ [某些文本] [数字] _ [数字] _ [所需的数字] _ [日期] .html” 的格式,则此方法有效。得到编号后,我认为使用append
方法将该编号添加到所需的任何列表将非常简单。
答案 2 :(得分:0)
将文件名放在下划线上,然后选择第三个元素(索引2)。
>>> 'Prod224_0055_00007464_20170930.html'.split('_')[2]
'00007464'
在可能如下所示的上下文中:
nums = [f.split('_')[2] for f in os.listdir(dir) if f.endswith('.html')]