Sida 1 av 1
python %
Postat: 21 juli 2025, 16:03:15
av Oltronix
Jag vet inte vad operatorn/funktionen % heter men nedan fungerar ej för mig
Kod: Markera allt
html =""" <div class="col-sm-8 col-md-2">
<div class="box">
<a href="./bilder/ %s target="_blank">
<img src="./bilder/ %s alt="Lights" style="width:100%">\n\
<div class="caption">
<p>
"""
html = html % ("A", "B")
$python3 pp2.py
ger föjande felutskrift
Kod: Markera allt
Traceback (most recent call last):
File "/home/erik/Bilder/Bootstrap/JD-AL/new-sw/pp2.py", line 8, in <module>
html = html % ("A", "B")
TypeError: not enough arguments for format string
Jag testat med lite olika varianter men inget fungerar.
Re: python %
Postat: 21 juli 2025, 16:17:36
av H.O
Ingen stjärna på Python här.
Jag trodde %-tecknet var modulo-operatorn? Dvs 10 % 4 = 2 medan det i ditt fall ser ut som du försöker göra någon form av sträng-operation.
Vad försöker du göra?
Re: python %
Postat: 21 juli 2025, 17:03:35
av pi314
Exakt!
Modulooperatorn ska ha två heltal som argument.
Resultatet är resten vid division.
Exempel.
Ger: 1
Eftersom 7/3 = 2, resten = 1, i heltalsaritmetik.
/π
Re: python %
Postat: 21 juli 2025, 18:18:27
av guckrum
Ser ut som att du vill byta ut "%s" mot "A" osv, men du har också "%" i strängen som måste escapas.
Byt ut det mot en f-string (googla).
Re: python %
Postat: 21 juli 2025, 18:23:28
av guckrum
Detta är ett sätt.
Kod: Markera allt
A = 'apa'
B = 'banan'
html = f""" <div class="col-sm-8 col-md-2">
<div class="box">
<a href="./bilder/ {A} target="_blank">
<img src="./bilder/ {B} alt="Lights" style="width:100%">\n\
<div class="caption">
<p>
"""
Re: python %
Postat: 21 juli 2025, 18:25:29
av guckrum
Och detta är ett annat
Kod: Markera allt
html = """ <div class="col-sm-8 col-md-2">
<div class="box">
<a href="./bilder/ {A} target="_blank">
<img src="./bilder/ {B} alt="Lights" style="width:100%">\n\
<div class="caption">
<p>
"""
html.format(A = 'apa',B = 'banan')
Re: python %
Postat: 21 juli 2025, 19:29:20
av Oltronix
Jag använde den senaste varianten.
html.format(A = 'apa',B = 'banan')
Tack!
Re: python %
Postat: 22 juli 2025, 00:27:21
av Oltronix
Här är W3 formatsida. Längst ner på sidan finns det guckrum förslog och jag använder. F-Strings verkar vara lite gammalt. String format() verkar mordernare.
https://www.w3schools.com/python/python ... atting.asp
Här formatet jag försökte använda men inte fick till
https://www.geeksforgeeks.org/python/st ... in-python/
Re: python %
Postat: 22 juli 2025, 04:05:10
av rvl
Problemet med den ursprungliga koden är:
escapera det procenttecknet till:
hela koden (med print):
Kod: Markera allt
html =""" <div class="col-sm-8 col-md-2">
<div class="box">
<a href="./bilder/ %s target="_blank">
<img src="./bilder/ %s alt="Lights" style="width:100%%">\n\
<div class="caption">
<p>
"""
html = html % ("A", "B")
print(html)
resultat:
Kod: Markera allt
<div class="col-sm-8 col-md-2">
<div class="box">
<a href="./bilder/ A target="_blank">
<img src="./bilder/ B alt="Lights" style="width:100%">
<div class="caption...
är onödigt inom trippelcitaten och kan tas bort.
Re: python %
Postat: 22 juli 2025, 07:00:09
av guckrum
f-strings är en rekommenderad metod, gå gärna direkt till källan istf någon annans tolkning av den:
https://docs.python.org/3/tutorial/inputoutput.html. Om det är gammalt eller modernt kan ha betydelse för bakåtkompatibilitet, fundera på om det är en viktig aspekt här.
Felet du hade ger Python en bra ledtråd till när den säger "not enough arguments for format string". Du formatterar en sträng och har TVÅ argument. Varje argument skall motsvaras av ett procenttecken i strängen, och man kan räkna till TRE av dem. Det går inte ihop, därför blir det stopp.
Re: python %
Postat: 22 juli 2025, 09:08:46
av Oltronix
>Om det är gammalt eller modernt kan ha betydelse för bakåtkompatibilitet, fundera på om det är en viktig aspekt här.
Point taken.
Re: python %
Postat: 22 juli 2025, 18:08:03
av Oltronix
rvl skrev: ↑22 juli 2025, 04:05:10
Problemet med den ursprungliga koden är:
escapera det procenttecknet till:
Tack för det. Jag såg inte %-teckenet i 100%. Jag var jätteförvirrad och försökte med det ena och andra för att lösa felet
Sedan är det frågan vilket sätt man väljer. Jag har bara sett små fördelar/nackdelar med de olika sätten. guckrum har bakåtkompatibilitet-argmuentet för F-Strings
En stilla undra är varför det finns olika 3st sätt. jaja det finns även ett 4e sätt. Jag hade först ett antal strängar som jag på slutet slog samma. Såg mkt fult ut och svåröverskådligt.
Re: python %
Postat: 22 juli 2025, 18:29:04
av guckrum
Ett fjärde är att konkatenera ihop strängen själv typ "text" + A + "mer text".
Det är det här med pragmatism. Ett sätt räcker såklart, och idealt skall man bara ha ett. Men vilket man än väljer så kommer det inte att passa som handen i handsken i alla upptänkliga fall.
F-strängar kräver egentligen minst ansträngning, eftersom Python evaluerar det som står inom krullarna och stoppar in den motsvarande strängen direkt, så inga konverteringar eller mappningar behövs. Använder jag själv f-strängar hela tiden? Nej, det kan jag inte påstå...
Re: python %
Postat: 22 juli 2025, 23:29:12
av Oltronix
>Ett fjärde är att konkatenera ihop strängen själv typ "text" + A + "mer text
Precis så gjorde jag i början. Jag hade 5 fasta strängar och 2 variabla. Det fungerar men rörigt och knepigt att uppdatera.