2016-01-21 2 views
0

J'ai besoin de trier les paragraphes par ordre alphabétique en fonction d'un nom de fichier utilisé dans chaque paragraphe. Voici un exemple à quoi ça ressemble (il y a environ 200 paragraphes comme celles-ci dans un fichier texte):Trier les paragraphes dans un fichier texte par ordre alphabétique en utilisant Python

------------------------------------------------------------------ 
L:hwqw\se\hf8594.txt 

File Creation Date:   September 07, 2004 
Identifier #:     hf8594.tif 
Image Pixels (meters):   1.25 
Format:      8 bit TIFF 

------------------------------------------------------------------ 
L:hhtk\ha8421.txt 

File Creation Date:   September 07, 2004 
Identifier #:     ha8421.tif 
Image Pixels (meters):   1.25 
Format:      8 bit TIFF 

Maintenant, je dois trier les paragraphes selon le Identifier # (identifiant a le même nom que le fichier texte en haut, mais les fichiers texte sont dans des sous-dossiers différents, donc je pense qu'il vaudrait mieux utiliser l'identifiant).

+1

Eh bien, je ne sais même pas comment commencer, parce que je suis débutant en Python – MetalMuzu

+1

Ouais, rien de mal avec une question de débutant à mon avis. –

Répondre

3

Fractionnez la chaîne de paragraphes pour obtenir chaque paragraphe dans une liste.

Ceci peut être réalisé en utilisant

paragraph_sep = "------------------------------------------------------------------\n" 
paragraphs = paragraph_str.split(paragraph_sep)[1:] 

Extrait l'identifiant de chaque élément de paragraphe.

Cela peut être fait en utilisant regular expressions

import re 
s = 'Identifier #:     hf8594.tif' 
comp = re.compile("Identifier #: \s* (.*tif)") 
a = re.search(comp, s) 
a.groups() 
=> ('hf8594.tif',) 

Trier les paragraphes liste avec l'identifiant.

Notez que vous pouvez facilement passer une fonction pour définir les touches de la fonction de tri.

comp = re.compile("Identifier #: \s* (.*tif)") 
def get_id_from_string(s): 
    ids = re.search(comp, s) 
    return ids[0] 
paragraphs.sort(key=get_id_from_string) 

RECONSTRUIRE la chaîne

Avec sep.join(paragraphs)

Vous avez maintenant les différentes étapes, l'espoir qu'il aide.

+0

Cela fonctionne. Je vous remercie. – MetalMuzu