Seite 1 von 1

String elegant kürzen ?

Verfasst: Mittwoch 7. September 2005, 12:47
von rogen
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

Verfasst: Mittwoch 7. September 2005, 12:59
von jens
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"

Verfasst: Mittwoch 7. September 2005, 13:16
von Joghurt
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>")

Re: String elegant kürzen ?

Verfasst: Mittwoch 7. September 2005, 21:39
von BlackJack
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.

Hilft das?

Verfasst: Freitag 9. September 2005, 16:19
von 1-1-1
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