Topic: trova nel testo e copia linea superiore  (Letto 96 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline pino88

  • python unicellularis
  • *
  • Post: 1
  • Punti reputazione: 0
    • Mostra profilo
trova nel testo e copia linea superiore
« il: Settembre 12, 2019, 16:03 »
Salve ,
il mio file e' composto in questo modo
aaaaaaaaaaaaaaaaa
aaaaaaabaaaaaaaaa
********* *********
come potete notare in corrispondenza tra la prima riga e la seconda c'e' un gap nella riga 3.
io ho scritto lo script:
 <
import re
hand = open('outs.fa', "r")
for line in hand:
    if re.search('\*\s', line):
        print(line)
>
che mi permette di trovare questi gap nel file di testo che ho.
adesso a me serve che quando trovo il match (ovvero uno spazio dopo *) lui possa darmi come output il corrispettivo della riga precedente
nel caso in esame: aaaaabaaaaa ovvero mi serve identificare la b e un numero x di caratteri che la fiancheggiano.
il tutto partendo  dal gap che io ho gia identificato ovvero "**** *****"

Offline Aezio

  • python neanderthalensis
  • ****
  • Post: 327
  • Punti reputazione: 1
    • Mostra profilo
Re:trova nel testo e copia linea superiore
« Risposta #1 il: Settembre 13, 2019, 08:54 »
Ciao Pino, per favore formatta le porzioni di codice con il tag pythoncode, aiuta immensamente la lettura del post:

import re

st = """
aaaaaaaaaaaaaaaaa
aaaaaaabaaaaaaaaa
********* *********
"""

for idx, line in enumerate(st.split('\n')[1:-1]):
    if re.findall('[\ ]+', line) == [' ']:
        print('Line with a gap after an "*": {}'.format(idx))


Non mi andava di creare un file per questo ho usato il trucco di split per simulate un file con 3 linee di testo.

Lascio a te la trasformazione del codice in una funzione dato che ti serve l'output per qualche passo (non chiarissimo) successivo. Ah, ricordati, se leggi un file di testo piu' volte seek e' tuo amico