-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

フィルタリングを行うために使用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 に答える
1
files = [...]
xml_files = [fn for fn in files if fn.endswith('.xml')]
于 2012-09-11T06:01:06.557 に答える
0

Obviously you want something like

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

Please read the regular expressions documentation. This is truly regex basics.

于 2012-09-11T06:15:56.150 に答える