Discussion:
[Python] Opstilling af smeget lange strenge
(for gammel til at besvare)
Bertel Lund Hansen
2013-10-29 11:39:50 UTC
Permalink
Hej allesammen

Jeg er ved at lave et program der skal producere en HTML-fil. I
programmet har jeg brug for at notere nogle lange strenge idet
jeg opsamler nogle HTML-linjer til senere udskrift. Jeg savner en
god måde at lave opstillingen på.

I en af afdelingerne er det kun rå tekst der optræder i linjerne,
og så er det nemt nok:

html_headers="""<!DOCTYPE html ...
<html>
<head>
osv.
"""

Men i flere af de andre afdelinger skal jeg have flettet nogle
variabelværdier ind i strengen. Jeg har noget der virker, men det
er ikke særlig kønt og ikke særlig vedligeholdelsesvenligt:

display0="{0}{1}{2}{3}{4}{5}".format(
"<h2>{0}</h2>".format(self.name),
"<table>",
"<tr><th>Placering</th><th class='text'>Klub</th>",
osv.
)

Senere returnerer jeg display0+display1+display2+display3 fra
funktionen. Findes der en bedre måde? I PHP kan jeg bruge
'plus'-tegnet på en ny linje som f.eks.:

$display="linje 1"
."linje2"
."linje3"
osv.

men Python brokker sig over et +-tegn på en ny linje.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Christoffer
2013-10-29 15:01:11 UTC
Permalink
Post by Bertel Lund Hansen
Senere returnerer jeg display0+display1+display2+display3
fra
funktionen. Findes der en bedre måde? I PHP kan jeg bruge
$display="linje 1"
."linje2"
."linje3"
osv.
men Python brokker sig over et +-tegn på en ny linje.
I PHP behøver man ikke at starte en ny streng hver gang man
starter en ny linje. Dvs. man kan godt skrive:

$display="linje 1
linje2
linje3";

Jeg ved ikke om det er det samme i Phyton, så jeg ved ikke
om du kan bruge det til noget.

Mvh. Christoffer

Få overblik over nyhedsgrupperne her:
http://www.cht.dk/newsgroups/
Bertel Lund Hansen
2013-10-29 16:10:26 UTC
Permalink
Post by Christoffer
I PHP behøver man ikke at starte en ny streng hver gang man
$display="linje 1
linje2
linje3";
Ja, det kender jeg godt, men det kan man ikke i Python.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Anders J. Munch
2013-10-29 19:47:43 UTC
Permalink
Post by Bertel Lund Hansen
I en af afdelingerne er det kun rå tekst der optræder i linjerne,
html_headers="""<!DOCTYPE html ...
<html>
<head>
osv.
"""
Men i flere af de andre afdelinger skal jeg have flettet nogle
variabelværdier ind i strengen.
.format virker lige så godt med en trippel-quotet streng:

display0="""
<h2>{name}</h2>
<table>
<tr><th>Placering</th><th class='text'>Klub</th>
<tr><td>{placering}</td><td>{klub}</td></tr>
</table>
""".format(
name = self.name,
placering = self.placering,
klub = self.klub,
)
Post by Bertel Lund Hansen
men Python brokker sig over et +-tegn på en ny linje.
Fordi linieskift afslutter sætningen, og så står "+" som begyndelsen på en ny
sætning (hvilket fører til en syntaksfejl på forkert indrykning).

Men hvis det er indenfor en parentes, så afslutter linieskift ikke sætningen
alligevel -- se ovenfor, hvor jeg benyttede mig af det til at sætte parametrene
til .format på hver sin linie.

mvh. Anders
Bertel Lund Hansen
2013-10-29 20:14:22 UTC
Permalink
Tak for det. Det var løsningen.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Loading...