2014-07-11 4 views
1

Je veux imprimer la partie sélectionnée d'un fichier texte, text.txt, qui contient:analyse syntaxique Python zone sélectionnée/gamme de fichier texte

tickme 1.1(no.3) 
lesson1-bases 
lesson2-advancedfurther 
para:using the dsp signals are sened via a transmitter to conver to analong signals and gets the output in the form of digital signal 

tickme 2.2(no.4) 
lesson1-basics2 
lesson2-advanced4 
para:using the DIGITAL signals are sened via a transmitter to conver to analong signals and gets the output in the form of digital signal 

tickme 3.3(no.5) 
lesson1-bas 
lesson2-adv 
para:using the dsp signals are sened via a transmitter to conver to analong signals and gets the output in the form of digital signal 

Ici, il se compose de 3 me cocher, mais je voulais choisir un particulier tickme 2.2 (n ° 4) où je dois analyser le texte avant le début du tickme 3.3 (n ° 5).

Donc, si « DIGITAL » est dans le paragraphe, il faut imprimer « lesson1 », car il provoque l'ambiguïté que je voulais sélectionner la plage de fichier texte.

Sortie:

lesson1-basics2 

Comme il a la leçon 1 commun pour tous me cocher, j'ai besoin pour sélectionner la zone spécifique pour analyser entre tickme2.2 (n ° 4) à tickme 3.3 (No.5) Existe-t-il un moyen d'obtenir une plage pour une zone spécifique et d'analyser - et possibily il y aura une grande quantité de données entre tick me pas même comme exemple.

Problème: Il ne sélectionne pas une plage spécifique.

searchstring = "" 
with open('text.txt','r') as file: 

    for line in file: 
     if 'tickme' in line: 
      searchstring = line 
     if searchstring != '': 
      if 'DIGITAL' in line: 
       print(searchstring) 
       print(line) 

Répondre

1

diviser le fichier en lots comme ceci:

avec open ('txt.txt') telle que f: lots = []

t = [] 
for l in line: 
    if 'tickme' in l: 
     # Start a new bactch after saving the previous batch 
     if t: batches.apend(t) 
     t = [l.strip()] 
    else: 
     if len(l.strip()) > 1: t.append(l.strip())