Wie lege ich eine Variable in einen String in Python?

Ich würde gerne einen int in eine string . Das mache ich gerade:

 end = smooth(data,window_len=40) plot.plot(time[0:len(end)],end) plot.savefig('hanning(40).pdf') #problem line 

Ich muss das Programm für mehrere verschiedene Nummern anstelle der zwei 40er ausführen. Also würde ich gerne eine Schleife machen, aber das Einfügen der Variablen wie folgt funktioniert nicht:

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

Wie füge ich eine Variable in eine Python-Zeichenfolge ein?

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

Der Operator % ermöglicht Ihnen, nach dem Folgen einer Zeichenfolge, Werte in diese Zeichenfolge über Formatcodes einzufügen (in diesem Fall %d ). Weitere Informationen finden Sie in der Python-Dokumentation:

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

Oh, die vielen, vielen Möglichkeiten …

String-Verkettung:

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

Conversion-Bezeichner:

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

Lokale Variablennamen verwenden:

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

Verwenden von format ():

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

Mit string.Template:

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

Mit der Einführung von formatierten String-Literalen (kurz “f-Strings”) in Python 3.6 ist es jetzt möglich, dies mit einer kürzeren Syntax zu schreiben:

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

Mit dem Beispiel in der Frage würde es so aussehen

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

Nicht sicher, was genau der gesamte von Ihnen gepostete Code tut, aber um die im Titel gestellte Frage zu beantworten, können Sie sowohl + als normale String-Concat-function als auch str () verwenden.

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

Ich hoffe, das hilft!

Im Allgemeinen können Sie Zeichenfolgen mit folgenden Elementen erstellen:

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

Ich brauchte eine erweiterte Version von diesem: Anstatt eine einzelne Zahl in eine Zeichenfolge einzubetten, musste ich eine Reihe von Dateinamen in der Form ‘Datei1.pdf’, ‘Datei2.pdf’ usw. erzeugen. So ist es hat funktioniert:

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