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.
Antworten
rogen
User
Beiträge: 85
Registriert: Dienstag 29. März 2005, 17:45
Wohnort: neustift
Kontaktdaten:

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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"

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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

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

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
Antworten