J'ai besoin d'utiliser Python pour extraire la date des noms de fichiers. La date est dans le format suivant:
import re
m = re.search('(?<=-)\w+', 'derer-10-12-2001.zip')
print m.group(0)
5 Réponses :
Vous souhaitez utiliser un Capture Group .
m = re.search('\b(\d{2}-\d{2}-\d{4})\.', 'derer-10-12-2001.zip')
print m.group(1)
Votre REGEXP ne correspond pas si le nom de fichier commence par une date (comme dans le premier exemple). Une façon de résoudre ce problème serait de remplacer l'union initiale dans votre motif avec (?: ^ | -) code>.
Hein, tu as raison. Je n'ai même pas remarqué cet exemple. Édition maintenant.
Eh bien, le \ w + code> vous mettez correspond à un ou plusieurs caractères de mots à la suite d'un hypancier, c'est donc le résultat attendu. Ce que vous voulez faire, c'est utiliser un regard sur le point de vue de chaque côté, des nombres assortis et des traits d'union qui se produisent entre le premier trait d'union et une période: P>
re.search (r '(? <= - -) [\ d -] + (? = \ \.)', nom). GROUP (0) P> P> P>
En supposant que la date est toujours au format: [mm] - [jays] - [AAA].
re.search("([0-9]{2}\-[0-9]{2}\-[0-9]{4})", fileName)
Notez que pour utiliser la sortie de cette option, vous recevrez une liste de retour: résultat = re.search ("([0-9] {2} \ - [0-9] {2} \ - [0-9] {4}) ", nom de fichier) code> résultat [0] code> # donnera ce que vous voulez
Ajout au ci-dessus [0-9] {2,4} / [0-9] {2} / [0-9] {2,4} correspondra '2017/02/23' et '23 / 02/2017 ' les deux. De même, [0-9] {2,4} \ - [0-9] {2} \ - [0-9] {2,4} correspondra à 2017-02-23 et à 23-02-2017.
Je pense que vous pouvez extraire la date à l'aide de Re.Split comme suit
$ ipython
In [1]: import re
In [2]: input_file = '10-12-2011.zip'
In [3]: file_split = re.split('(\d{2}-\d{2}-\d{4})', input_file, 1)
In [4]: file_split
Out[4]: ['', '10-12-2011', '.zip']
In [5]: file_split[1]
Out[5]: '10-12-2011'
In [6]: input_file = 'somedatabase-10-04-2011.sql.tar.gz'
In [7]: file_split = re.split('(\d{2}-\d{2}-\d{4})', input_file, 1)
In [8]: file_split
Out[8]: ['somedatabase-', '10-04-2011', '.sql.tar.gz']
In [9]: file_split[1]
Out[9]: '10-04-2011'
**This is simple method to find date from text file in python**
import os
import re
file='rain.txt' #name of the file
if(os.path.isfile(file)): #cheak if file exists or not
with open(file,'r') as i:
for j in i: #we will travarse line by line in file
try:
match=re.search(r'\d{2}-\d{2}-\d{4}',j) #regular expression for date
print(match.group()) #print date if match is found
except AttributeError:
pass
else:
print("file does not exist")