2016-09-30 6 views
2

Je souhaite modifier le format d'heure dans certaines lignes de texte en utilisant regex. Comment puis-je utiliser les anciennes valeurs de temps? Mon code jusqu'à présent:Reformatez la valeur datetime avec regex dans un fichier texte

def file_replace_words(file_in, word_to_replace, replace_with): 
    f = open(file_in, "r+") 
    data = f.readlines() 
    f.seek(0) 
    for line in data: 
     line = re.sub(word_to_replace, replace_with, line) 
     f.write(line) 
    f.truncate() 
    f.close() 

f.file_replace_words(path_putty_log, r"(\d\d\/\d\d\/\d\d) - \d\d:\d\d:\d\d:\d\d\d", 
        "my time in format 31.12.1999 11:54:23") 

Je souhaite modifier les valeurs de 29/09/16 - 16: 38: 09: 808 à 29/09/16 16:38:09.

Répondre

1

Vous pouvez ajouter d'autres groupes de capture dans votre expression régulière et utiliser un modèle de remplacement avec des références arrières correspondantes.

Utilisez

r'(\d\d)/(\d\d)/(\d\d) - (\d\d:\d\d:\d\d):\d{3}' 
    |- 1-| |- 2-| |-3 -| | ----- 4 ---- | 

et le remplacer par r'\1.\2.\3 \4'. Voir le regex demo. REMARQUE: S'il existe des sous-chaînes plus longues qui ressemblent à ces horodatages, vous pouvez inclure le motif entier avec les limites de mots \b: r'\b(\d\d)/(\d\d)/(\d\d) - (\d\d:\d\d:\d\d):\d{3}\b'.