String elegant kürzen ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
rogen
User
Beiträge: 85
Registriert: Dienstag 29. März 2005, 17:45
Wohnort: neustift
Kontaktdaten:

String elegant kürzen ?

Beitragvon rogen » Mittwoch 7. September 2005, 12:47

ich parse den text aus einer html datei mit

Code: Alles auswählen

def RemoveTags(htmlString):
   '''remove all html tags from a string
   jjk  01/05/99'''
   htmlString = htmlString.replace("\n","ZeilenSchaltungen")
   style = re.findall(""".*<STYLE>(.+?)</STYLE>.*""", str(htmlString))

   try:
            htmlString =  htmlString.replace(str(style[0]),"")
        except:
            htmlString =  htmlString
   htmlString =  htmlString.replace('ZeilenSchaltungen',"\n")

   hs = htmlString
   while(1):
      if TraceFlag:
         print '~', hs
      p1 = TagRegex.search(hs)
      if (p1<0): break
      p2 = p1 + TagRegex.match(hs[p1:])
      if TraceFlag:
         print '~~',p1, p2, hs[p1:p2]
      hs = hs[:p1] + ' ' + hs[p2:]
   if TraceFlag:
      raw_input('z')
   hs = hs.replace(" ","")
   return(hs)


leider hat der text oben viele leerzeichen und schaltungen die ich nicht gebrauchen kann
wie kann ich die schnell löschen ?

replace geht nicht da er alle leerzeichen und schaltungen löscht
mfg

gerhard rogen
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 7. September 2005, 12:59

Was willst du denn jetzt genau aus einer HTML-Seite haben???
Ich würd evtl. einen fertigen Parser nehmen, such mal im Forum nach "SGMLParser"

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Mittwoch 7. September 2005, 13:16

Wie wäre es mit

Code: Alles auswählen

import re
TagRE = re.compile(r"\s*<.*?>\s*")
print TagRE.sub("","<a href='asdasd'>Dies ist <b>ein</b> HTML-Text</a>")
BlackJack

Re: String elegant kürzen ?

Beitragvon BlackJack » Mittwoch 7. September 2005, 21:39

rogen hat geschrieben:leider hat der text oben viele leerzeichen und schaltungen die ich nicht gebrauchen kann
wie kann ich die schnell löschen ?

replace geht nicht da er alle leerzeichen und schaltungen löscht


Es wäre hilfreich wenn Du mal ein Beispiel von Text mit Leerzeichen und Schaltungen zeigst und sagst welche davon erhalten bleiben sollen und welche nicht. Es scheint ja "gute" und "schlechte" zu geben.
1-1-1
User
Beiträge: 12
Registriert: Freitag 9. September 2005, 08:42
Wohnort: München

Hilft das?

Beitragvon 1-1-1 » Freitag 9. September 2005, 16:19

Hier zwei Code-Schnipsel!

Code: Alles auswählen

from string import *

def wech1(x):
    x=replace(x,'  ',' ')
    if '  ' in x:
        x=wech1(x)
    return x

def wech2(x,z):
    x=replace(x,z*2,z)
    if z*2 in x:
        x=wech2(x,z)
    return x


Wenn Du nicht unbedingt zum Parsen die Zeilenwechsel erhalten mußt, dann alle Zeilenwechsel durch Leerzeichen ersetzen und mit "wech1" drüberrutschen!

Sonst mit "wech2" und als Parameter z das "böse" Zeichen angeben. Dann werden alle mehrfach auftretende "z" entfernt.

Code: Alles auswählen

a='aaaa \n\n  bb\nb bb     cccc s'
b=wech2(wech2(a,' '),'\n')

b='aaaa \n bb\nb bb cccc s'
wäre dann das Ergebnis.

Wenn's hilft

Gruß Michael

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder