Ik wil een int
in een string
plaatsen. 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 %d
in 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
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
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)