如何找到具有特定名称的XML文件

2024-10-02 12:38:41 发布

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

我正在使用Python并尝试从使用正则表达式的文件列表中获取XML文件,但直到现在我还从未使用过正则表达式。你知道吗

假设我有一个文件列表:

files = ['.bash_logout', '20120910NYP.xml', '.bash_profile', '.bashrc', '.mozilla', 'testfile_248.xml']

现在我需要获取格式为20120910NYP.xml的文件,所以我决定编写一个正则表达式:

import re
feedRegex = # ?
feedFiles = filter((lambda x: re.search(feedRegEx, x) != None), files)

在上面的代码中,如何为feedRegex编写一个正则表达式,以便从列表中找到这种格式的XML文件?你知道吗

编辑代码:

每次我需要这个函数时,都需要给它list of filesfeedregex代码

import re

def paramikoFetchLatestFeedFile(list_of_files, feedRegEx):

    self.files = list_of_files
    self.feedRegEx = feedRegEx

    feedFiles = filter((lambda x: re.search(self.feedRegEx, x) != None), self.files)

Tags: 文件of代码importselfrebash列表
3条回答
files = [...]
xml_files = [fn for fn in files if fn.endswith('.xml')]

显然你想要的是

regex = re.compile('^\d{8}.NYP.xml$')

请阅读正则表达式文档。这是真正的正则表达式基础。你知道吗

使用^{}为您进行筛选。你知道吗

假设您有以下目录:

burhan@sandbox:~/t$ ls -l
total 0
-rw-r r  1 burhan burhan 0 Sep 11 09:17 20120101NYP.xml
-rw-r r  1 burhan burhan 0 Sep 11 09:08 20120819ABC.xml
-rw-r r  1 burhan burhan 0 Sep 11 09:09 ABC10234ABC.xml
-rw-r r  1 burhan burhan 0 Sep 11 09:15 bar.txt
-rw-r r  1 burhan burhan 0 Sep 11 09:15 blablah.gif
-rw-r r  1 burhan burhan 0 Sep 11 09:15 foo.txt
-rw-r r  1 burhan burhan 0 Sep 11 09:15 hello.jpg

下面是如何过滤它:

>>> import glob
>>> glob.glob("[0-9]*NYP.xml")
['20120101NYP.xml']

对于您的具体要求:

>>> import re
>>> file_list = ['20121011NYP.xml','foo.bar','zoo.txt','ABC1234.xml','20120101ABC.XML']
>>> exp = re.compile('^\d{8}NYP\.xml$', re.I)
>>> filtered_list = [x for x in file_list if re.match(exp,x)]
>>> filtered_list
['20121011NYP.xml']

相关问题 更多 >

    热门问题