Hoe plaats ik een variabele in een string?

Ik wil een intin een stringplaatsen. Dit is wat ik op dit moment doe:

num = 40
plot.savefig('hanning40.pdf') #problem line

Ik moet het programma voor verschillende nummers uitvoeren, dus ik wil graag een lus maken. Maar de variabele op deze manier invoegen werkt niet:

plot.savefig('hanning', num, '.pdf')

Hoe voeg ik een variabele in een Python-string in?


Antwoord 1, autoriteit 100%

plot.savefig('hanning(%d).pdf' % num)

Met de operator %kunt u bij het volgen van een tekenreeks waarden in die tekenreeks invoegen via opmaakcodes (de %din dit geval). Zie de Python-documentatie voor meer details:

https://docs.python.org/ 3/library/stdtypes.html#printf-style-string-formatting


Antwoord 2, autoriteit 93%

O, de vele, vele manieren…

Aaneenschakeling van tekenreeksen:

plot.savefig('hanning' + str(num) + '.pdf')

Conversiespecificatie:

plot.savefig('hanning%s.pdf' % num)

Lokale variabelenamen gebruiken:

plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick

str.format():

plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the new preferred way

F-strings gebruiken:

plot.savefig(f'hanning{num}.pdf') # added in Python 3.6

string.Template:

plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))

Antwoord 3, autoriteit 96%

Met de introductie van opgemaakte letterlijke tekenreeksen(“f -strings” voor kort) in Python 3.6, is het nu mogelijk om dit te schrijven met een kortere syntaxis:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

Met het voorbeeld dat in de vraag wordt gegeven, zou het er zo uitzien

plot.savefig(f'hanning{num}.pdf')

Antwoord 4, autoriteit 10%

Ik weet niet precies wat alle code die je hebt gepost doet, maar om de vraag in de titel te beantwoorden, kun je + gebruiken als de normale string-concat-functie, evenals str().

"hello " + str(10) + " world" = "hello 10 world"

Hopelijk helpt dat!


Antwoord 5, autoriteit 3%

Over het algemeen kunt u strings maken met:

stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)

Antwoord 6, autoriteit 3%

Als u meerdere waarden in de tekenreeks wilt plaatsen, kunt u gebruik maken van format

nums = [1,2,3]
plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))

Zou resulteren in de string hanning123.pdf. Dit kan met elke array.


Antwoord 7, autoriteit 2%

Ik had behoefte aan een uitgebreide versie hiervan: in plaats van een enkel nummer in een string in te sluiten, moest ik een reeks bestandsnamen genereren in de vorm ‘file1.pdf’, ‘file2.pdf’ enz. Dit zo werkte het:

['file' + str(i) + '.pdf' for i in range(1,4)]

Antwoord 8

Je hoeft alleen de num varriable in een string te gieten met

str(num)

Other episodes