Discussion:
[Python] for-løkker og HTML-decode
(for gammel til at besvare)
Bertel Lund Hansen
2012-01-22 03:46:58 UTC
Permalink
Hej alle

I PHP kan man lave en løkke på én linje hvor både nummer og
variabel gennemløbes automatisk:

foreach ($linearray as $nr => $line) { do_something(); }

Kan man noget lignende i Python? Det forekommer mig at der er
mange smarte for-løkketyper, men jeg kan aldrig finde opskriften
når jeg lige står og skal bruge dem.

Jeg har brug for at fjerne HTML-entities fra nogle strenge. Der
er ikke tale om at de skal HTML-parses. Jeg skal også have
fjernet HTML-tags.

Hvordan gør man det?

Den eneste løsning jeg kan se - efter flittig læsning af en
meget uoverskuelig manual - er en bruteforce-metode med gennemløb
af specifikt angivne værdier samt udradering af alt
mellem < og >.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Anders J. Munch
2012-01-24 00:36:49 UTC
Permalink
Post by Bertel Lund Hansen
Hej alle
I PHP kan man lave en løkke på én linje hvor både nummer og
foreach ($linearray as $nr => $line) { do_something(); }
Jeg kan ikke PHP, så jeg ved ikke om der er mere i det, men måske er det bare
enumerate du mangler:

for no,line in enumerate(linearray):
...
Post by Bertel Lund Hansen
Jeg har brug for at fjerne HTML-entities fra nogle strenge. Der
er ikke tale om at de skal HTML-parses. Jeg skal også have
fjernet HTML-tags.
Hvordan gør man det?
Quick-and-dirty måden er med regulære udtryk, à la:

import re
re.sub(r'</?(html|body|p)[^>]*>', '',
'<html><body><p>Testing, <em>1,2,3</em></p></body></html>')

Tager ikke højde for fx attributværdier der indeholder >-tegn.

Til noget mere poleret kan BeautifulSoup biblioteket formentlig bruges. Selv om
det jo så bliver HTML-parset. Eller man kan raffinere det regulære udtryk.

Entities der bare skal slettes kan tilføjes som alternativer i samme regexp;
hvis de skal erstattes med entity-specifik tekst (&aelig; til æ osv.), så vil
jeg foreslå re.sub med et regulært udtryk der matcher alle entities, og en
replacement-funktion i stedet for tekst (se re.sub doks), og i den funktion
finde erstatningsteksten med et opslag i en dict.

mvh. Anders
Bertel Lund Hansen
2012-01-25 15:24:25 UTC
Permalink
Post by Anders J. Munch
Post by Bertel Lund Hansen
foreach ($linearray as $nr => $line) { do_something(); }
Jeg kan ikke PHP, så jeg ved ikke om der er mere i det, men måske er det bare
Det er præcis det jeg har brug for. Tak.
Post by Anders J. Munch
Post by Bertel Lund Hansen
Jeg har brug for at fjerne HTML-entities fra nogle strenge.
Det kikker jeg på selv om jeg ikke er nogen haj til regulære
udtryk.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Loading...