-1

我正在使用 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 files函数编码feedregex

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)
4

3 回答 3

1
files = [...]
xml_files = [fn for fn in files if fn.endswith('.xml')]
于 2012-09-11T06:01:06.557 回答
1

用于glob为您进行过滤。

假设你有这个目录:

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']
于 2012-09-11T06:16:40.037 回答
0

显然你想要类似的东西

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

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

于 2012-09-11T06:15:56.150 回答