Scix Skrevet 31. juli 2010 Del Skrevet 31. juli 2010 (endret) Jeg har en Creole formatert artikkel, og ønsker å hente ut alt som står fra en bestemt overskrift til neste overskrift. Er det noen som kan vise meg i riktig retning? ==Overskrift 1== Dette er en overskrift. De er ganske greie å ha. ==Overskrift 2== Her er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjøre med en tekst. Avsnitt er også greit. ==Overskrift 3== Da var dette dokumentet slutt, og du kan finne deg ett nytt ett Jeg ønsker alt som står under Overskrift 2. Samtlige avsnitt. Edit: Bedre tittel Edit2: Demo tekst Endret 1. august 2010 av Scix Lenke til kommentar
snippsat Skrevet 31. juli 2010 Del Skrevet 31. juli 2010 Kan du poste noe data. Med det mener jeg dette,her er teksten <laa lbb lcc laa> fra creole formatert artikkel. Dette ønsker jeg og ta ut <lbb lcc> Lenke til kommentar
Scix Skrevet 1. august 2010 Forfatter Del Skrevet 1. august 2010 Da var litt demo tekst lagt til. Fikk tak i mye av det ved hjelp av re.findall(), men fikk litt problemer da det kom flere avsnitt inn i bildet. Lenke til kommentar
etse Skrevet 1. august 2010 Del Skrevet 1. august 2010 (endret) uten å ha sett mye over det, men hva med å laste det inn i en streng for så å bruke string.split("=="). Du vil da få en liste delt opp slik: 0: Det før første overskrift 1: Første oversrkfit 2: Teksten under første oversrkfit 3: Andre oversrift Eller enkelt gitt med: overskrift n = (2*n)-1 og tekst under overskrift l = 2*l La oss si du vil ha oversrkfit 5 med teksten under: 2*5-1 = 9 2*5 = 10 Da vil element 9 i listen være oversrkfiten og element 10 være teksten. Edit: Nå forutsatte jeg at du klarte å laste ned artikkelen da Endret 1. august 2010 av etse Lenke til kommentar
snippsat Skrevet 1. august 2010 Del Skrevet 1. august 2010 (endret) Du kan ta ut tekst basert på line nummer. for i,line in enumerate(open("c.txt")): if i >= 3 and i < 8: print line, '''-->Out ==Overskrift 2== Her er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjøre med en tekst. Avsnitt er også greit. ''' Eller på en line. print(''.join(open('c.txt').readlines()[3:8])), En som tar ut linjer mellom overskrift 2 og 3 flag = 1 linelist = open('c.txt') for line in linelist: if line.startswith('==Overskrift 2=='): flag = 0 if line.startswith('==Overskrift 3=='): flag = 1 if not flag and not line.startswith('==Overskrift 2=='): print line, '''-->Out Her er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjøre med en tekst. Avsnitt er også greit. ''' En med linecache(Standard Library) import linecache start_line = 3 end_line = 8 for i in range(start_line,end_line): line = linecache.getline('c.txt', i) print line, Endret 1. august 2010 av SNIPPSAT Lenke til kommentar
Scix Skrevet 1. august 2010 Forfatter Del Skrevet 1. august 2010 Takker for gode svar Lenke til kommentar
DonCorelli Skrevet 1. august 2010 Del Skrevet 1. august 2010 (endret) Du kan ta ut tekst basert på line nummer. for i,line in enumerate(open("c.txt")): if i >= 3 and i < 8: print line, '''-->Out ==Overskrift 2== Her er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjøre med en tekst. Avsnitt er også greit. ''' Eller på en line. print(''.join(open('c.txt').readlines()[3:8])), En som tar ut linjer mellom overskrift 2 og 3 flag = 1 linelist = open('c.txt') for line in linelist: if line.startswith('==Overskrift 2=='): flag = 0 if line.startswith('==Overskrift 3=='): flag = 1 if not flag and not line.startswith('==Overskrift 2=='): print line, '''-->Out Her er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjøre med en tekst. Avsnitt er også greit. ''' En med linecache(Standard Library) import linecache start_line = 3 end_line = 8 for i in range(start_line,end_line): line = linecache.getline('c.txt', i) print line, Bruk denne, er dette den beste manus =) Endret 1. august 2010 av hernil Lenke til kommentar
Terrasque Skrevet 3. august 2010 Del Skrevet 3. august 2010 (endret) regex kan fikse det der.. >>> import re >>> >>> def getText(overskrift, fulltekst): ... r = re.search(r'(?ms)^==%s==$([^(==)]+)' % overskrift, fulltekst) ... if r: ... return r.group(1) ... >>> getText("Overskrift 1", t) '\nDette er en overskrift. De er ganske greie ha.\n\n' >>> getText("Overskrift 2", t) '\nHer er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjrrrrrrrre med en tekst.\n\nAvsnitt er ogs greit. \n\n' >>> getText("Overskrift 3", t) '\nDa var dette dokumentet slutt, og du kan finne deg ett nytt ett\n' >>> Også: >>> def getAvsnitt(text): ... r = re.findall(r'(?m)^==(.+?)==$', text) ... return r ... >>> getAvsnitt(t) ['Overskrift 1', 'Overskrift 2', 'Overskrift 3'] Edit: Fikset første regex litt Edit2: >>> for avsnitt in getAvsnitt(t): ... print "Viser avsnitt", avsnitt ... print getText(avsnitt, t) ... Viser avsnitt Overskrift 1 Dette er en overskrift. De er ganske greie ha. Viser avsnitt Overskrift 2 Her er enda en overskrift. Det er helt utrolig hvor mye godt en overskrift kan gjrrrrrrrre med en tekst. Avsnitt er ogs greit. Viser avsnitt Overskrift 3 Da var dette dokumentet slutt, og du kan finne deg ett nytt ett Endret 3. august 2010 av Terrasque Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå