[Python-de] AW: Re: HTML-Datei auslesen, ändern ,schreiben der Code ist OnBlock

Privat webmaster at einfallsreich.ch
Don Jun 30 19:42:28 CEST 2005


Guten Tag danke für die Antwort

Sorry ich dachte das sei nicht so wichtig der HTMLParser macht nichts
anderes als eben das Attribut des img-tags um text erweitern...

Und das sieht so aus : 

class aHTMLParser(HTMLParser):
    res = ""

    def handle_starttag(self, tag, attrs):
        attributes=""
        for (key,value) in attrs:

            if tag=="img" and key=="alt":
                value = "esklappt"
            attributes += ' %s="%s"' % (key,value)            
        self.res += "<%s%s>" % (tag, attributes)

...und hier nochmals den restliche Code :

   def OnAlt(self, event):    
       for file in DirectoryWalker("."):
         try:
            html = open(file).read()
            parser = aHTMLParser()    
            parser.feed(html)
            parser.close()
            html = parser.res
            open(file, 'w').write(html)
                print file
         except:
                print "diese datei konnte nicht geöffnet werden"
       print "fertig mit alt ändern"

Leider ist die neugeschriebene Datei ohne Leere Zeilen und Leerschläge.
Und ich möchte eben das die Datei danach wieder gleich aussieht, drum
ist ein " pretty-printer" nicht so sinnvoll.


Danke und Gruess
Michel Koller



-----Ursprüngliche Nachricht-----
Von: python-de-bounces at python.net [mailto:python-de-bounces at python.net]
Im Auftrag von python-de-request at python.net
Gesendet: Keines
An: python-de at python.net
Betreff: python-de Nachrichtensammlung, Band 26, Eintrag 29

Um e-Mails an die Liste python-de zu schicken, nutzen Sie bitte die
Adresse

	python-de at python.net

Um sich via Web von der Liste zu entfernen oder draufzusetzen:

	http://python.net/mailman/listinfo/python-de

oder, via Email, schicken Sie eine Email mit dem Wort 'help' in
Subject/Betreff oder im Text an

	python-de-request at python.net

Sie koennen den Listenverwalter dieser Lister unter der Adresse

	python-de-owner at python.net

erreichen

Wenn Sie antworten, bitte editieren Sie die Subject/Betreff auf einen
sinnvollen Inhalt der spezifischer ist als "Re: Contents of python-de
digest..."


Meldungen des Tages:

   1. Wurzel ziehen (Benjamin Kaminski)
   2. Re: Wurzel ziehen (max)
   3. Re: Wurzel ziehen (Wolfram Kraus)
   4. Re: Wurzel ziehen (Georg Mischler)
   5. Re: Wurzel ziehen (Marcus von Appen)
   6. Re: Re: Wurzel ziehen (Benjamin Kaminski)
   7. HTML-Datei auslesen, ändern, schreiben der Code ist onBlock
      (michel.koller at globonet.ch)
   8. Re: HTML-Datei auslesen, ändern ,	schreiben der Code ist
      onBlock (Diez B. Roggisch)


----------------------------------------------------------------------

Message: 1
Date: Thu, 30 Jun 2005 14:38:14 +0200
From: Benjamin Kaminski <BeKaminski at web.de>
Subject: [Python-de] Wurzel ziehen
To: python-de at python.net
Message-ID: <706375710 at web.de>
Content-Type: text/plain; charset=iso-8859-1


Hallo,
wie zieht man unter python eigentlich die n-te wurzel aus einer zahl?


Vielen Dank.
-- 
Benjamin Kaminski
mailto:bekaminski at gmail.com
mailto:benjamin at kernteamer.de
________________________________________________________________________
_
Mit der Gruppen-SMS von WEB.DE FreeMail können Sie eine SMS an alle 
Freunde gleichzeitig schicken:
http://freemail.web.de/features/?mc=021179






------------------------------

Message: 2
Date: Thu, 30 Jun 2005 15:53:10 +0200
From: max <maximilian_88 at arcor.de>
Subject: Re: [Python-de] Wurzel ziehen
To: python-de at python.net
Message-ID: <200506301553.17028.maximilian_88 at arcor.de>
Content-Type: text/plain; charset="iso-8859-1"

Am Donnerstag, 30. Juni 2005 14:38 schrieb Benjamin Kaminski:
> Hallo,
> wie zieht man unter python eigentlich die n-te wurzel aus einer zahl?
hoch (**) 1/n, also für die 5te Wurzel aus 32:
32**(1/5) .. dachte ich, funktioniert nicht, da 1/5 ergibt 1. Also ist 
richtig:

32**(1/5.0)
>
>
> Vielen Dank.
gruß
maximilian
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         :
http://starship.python.net/pipermail/python-de/attachments/20050630/385f
d835/attachment-0001.pgp

------------------------------

Message: 3
Date: Thu, 30 Jun 2005 15:56:18 +0200
From: Wolfram Kraus <kraus at hagen-partner.de>
Subject: [Python-de] Re: Wurzel ziehen
To: python-de at python.net
Message-ID: <da0t6u$5c3$1 at sea.gmane.org>
Content-Type: text/plain; charset=us-ascii; format=flowed

Benjamin Kaminski wrote:
> Hallo,
> wie zieht man unter python eigentlich die n-te wurzel aus einer zahl?
> 
> 
> Vielen Dank.
Mit etwas Mathematik: n-te Wurzel aus x == x hoch 1/n
Oder in python:

 >>> 2 ** (1/3.)
1.2599210498948732
 >>> 1.2599210498948732 ** 3
2.0

HTH,
Wolfram




------------------------------

Message: 4
Date: Thu, 30 Jun 2005 09:59:18 -0400 (EDT)
From: Georg Mischler <schorsch at schorsch.com>
Subject: Re: [Python-de] Wurzel ziehen
To: python-de <python-de at python.net>
Message-ID: <Pine.BSF.4.58.0506300958000.77921 at emancholl.pair.com>
Content-Type: TEXT/PLAIN; charset=ISO-8859-1

max wrote:

> Am Donnerstag, 30. Juni 2005 14:38 schrieb Benjamin Kaminski:
> > Hallo,
> > wie zieht man unter python eigentlich die n-te wurzel aus einer
zahl?
> hoch (**) 1/n, also für die 5te Wurzel aus 32:
> 32**(1/5) .. dachte ich, funktioniert nicht, da 1/5 ergibt 1. Also ist
> richtig:
>
> 32**(1/5.0)


import math
math.sqrt(n)


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/



------------------------------

Message: 5
Date: Thu, 30 Jun 2005 16:31:54 +0200
From: Marcus von Appen <mva at sysfault.org>
Subject: Re: [Python-de] Wurzel ziehen
To: python-de at python.net
Message-ID: <20050630143154.GA539 at medusa.sysfault.org>
Content-Type: text/plain; charset=iso-8859-15

On, Thu Jun 30, 2005, Georg Mischler wrote:

> max wrote:
> 
> > Am Donnerstag, 30. Juni 2005 14:38 schrieb Benjamin Kaminski:
> > > Hallo,
> > > wie zieht man unter python eigentlich die n-te wurzel aus einer
zahl?
> > hoch (**) 1/n, also für die 5te Wurzel aus 32:
> > 32**(1/5) .. dachte ich, funktioniert nicht, da 1/5 ergibt 1. Also
ist
> > richtig:
> >
> > 32**(1/5.0)
> 
> 
> import math
> math.sqrt(n)
> 

Das gilt nur fuer die zweite Wurzel (sqrt ist die Kurzform fuer 'square
root').

gruss
Marcus



------------------------------

Message: 6
Date: Thu, 30 Jun 2005 17:59:10 +0200
From: Benjamin Kaminski <BeKaminski at web.de>
Subject: Re: [Python-de] Re: Wurzel ziehen
To: python-de at python.net
Message-ID: <706620409 at web.de>
Content-Type: text/plain; charset=iso-8859-1


Hallo,

> Mit etwas Mathematik: n-te Wurzel aus x == x hoch 1/n

so schlau war ich auch schon.
Aber wenn man sich unter
http://de.wikipedia.org/wiki/Potenz_%28Mathematik%29 das Beispiel im
Abschnitt nicht ganzzahlige Exponenten ansieht, dann funktioniert es
nicht mehr, oder steh ich aufm schlauch?


Vielen Dank
________________________________________________________________________
_
Mit der Gruppen-SMS von WEB.DE FreeMail können Sie eine SMS an alle 
Freunde gleichzeitig schicken:
http://freemail.web.de/features/?mc=021179






------------------------------

Message: 7
Date: Thu, 30 Jun 2005 19:01:31 +0200
From: <michel.koller at globonet.ch>
Subject: [Python-de] HTML-Datei auslesen, ändern, schreiben der Code
	ist onBlock
To: <python-de at python.net>
Message-ID: <000701c57d95$5d4db520$6e00a8c0 at globonet.internal>
Content-Type: text/plain; charset="iso-8859-1"

Guten Tag
 
Ich schreibe ein Skript welches eine HTML-Datei öffnet, ausliesst nd bei
allen IMG-Tags das Attribut “alt” mit Text erweitert.
Das funktioniert ganz gut, aber bei der neugeschriebene Datei ist der
HTML-Code danch ganz am Block, alle Leeren Zeilen und Leerzeichen sind
verschwunden.
Ich möchte aber das die Datei danach gleich aussieht wie bevor Sie
gelesen wurde.
 
Ich vermute das ich da was mit dem Schreiben der Datei nicht richtig
mache, weis aber nicht was
 
Was mache ich da Falsch?
 
   def OnAlt(self, event):    
       for file in DirectoryWalker("."):
         try:
            html = open(file).read()
            parser = aHTMLParser()    
            parser.feed(html)
            parser.close()
            html = parser.res
            open(file, 'w').write(html)
                print file
         except:
                print "diese datei konnte nicht geöffnet werden"
       print "fertig mit alt ändern"
 
Danke für jede Hilfe
 
Michel Koller 
 
Web Developer
dipl.Webmaster ZBW
-----------------------------------------
GLOBONET GmbH
Tel    +41 (0)71 914 44 00
Fax   +41 (0)71 914 44 19
Email  <mailto:michel.koller at globonet.ch> michel.koller at globonet.ch
URL    <http://www.globonet.ch> www.globonet.ch
----------------------------------------- 
 
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL:
http://starship.python.net/pipermail/python-de/attachments/20050630/25da
900f/attachment-0001.htm

------------------------------

Message: 8
Date: Thu, 30 Jun 2005 19:38:40 +0200
From: "Diez B. Roggisch" <deets at web.de>
Subject: Re: [Python-de] HTML-Datei auslesen, ändern ,	schreiben der
	Code ist onBlock
To: python-de at python.net
Message-ID: <200506301938.40501.deets at web.de>
Content-Type: text/plain;  charset="iso-8859-1"

Am Thursday, 30. June 2005 19:01 schrieb michel.koller at globonet.ch:
> Guten Tag
>
> Ich schreibe ein Skript welches eine HTML-Datei öffnet, ausliesst nd
bei
> allen IMG-Tags das Attribut “alt” mit Text erweitert.
> Das funktioniert ganz gut, aber bei der neugeschriebene Datei ist der
> HTML-Code danch ganz am Block, alle Leeren Zeilen und Leerzeichen sind
> verschwunden.
> Ich möchte aber das die Datei danach gleich aussieht wie bevor Sie
> gelesen wurde.
>
> Ich vermute das ich da was mit dem Schreiben der Datei nicht richtig
> mache, weis aber nicht was
>
> Was mache ich da Falsch?
>
>    def OnAlt(self, event):
>        for file in DirectoryWalker("."):
>          try:
>             html = open(file).read()
>             parser = aHTMLParser()
>             parser.feed(html)
>             parser.close()
>             html = parser.res
>             open(file, 'w').write(html)
>                 print file
>          except:
>                 print "diese datei konnte nicht geöffnet werden"
>        print "fertig mit alt ändern"

Das ist zwar Code und damit ein guter Start -- aber da wir weder wissen
was 
aHTMLParser() zurückgibt kann man dazu nix sagen.

Aber generell schon: Der whitespace zwischen html tags (heisst auch 
"insignifikant") wird von xml/html-parsern gerne überlesen bzw. nur auf 
"Anfrage" rausgegeben. Denn er ist eben unerheblich in allen Tags, die
kein 
#PCData oder ähnliches erlauben.

Wenn dein Problem ist das du wieder lesbarkeit herstellen willst, dann
besteht 
die einfache Lösung darin deinen generierten code duch einen html 
pretty-printer zu jagen. Davon gibt's genug, google hilft wie immer.

Wenn es aber _genau_ der whitespace sein soll, dann musst du das deinem
Parser 
mitteilen - dazu müssen wir aber wissen, was dein parser genau ist.

MfG Diez



------------------------------

_______________________________________________
python-de maillist  -  python-de at python.net
http://python.net/mailman/listinfo/python-de


Ende python-de Nachrichtensammlung, Band 26, Eintrag 29
*******************************************************