web-dev-qa-db-ja.com

文字列の中に変数を入れるにはどうすればいいですか?

intstringに入れたいのですが。これは私が現時点でやっていることです:

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

私はプログラムをいくつかの異なる数で実行しなければならないので、私はループをしたいのです。しかし、このように変数を挿入してもうまくいきません。

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

Python文字列に変数を挿入する方法

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

%演算子は、文字列を追跡するときに、フォーマットコード(この場合は%d)を介してその文字列に値を挿入することを可能にします。詳しくは、Pythonの資料を参照してください。

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

148
Amber

ああ、たくさんの、いろいろなやり方….

文字列の連結:

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

変換指定子

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

ローカル変数名を使う:

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文字列を使う:

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

string.Template :を使う

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

フォーマットされた文字列リテラルの導入 (Python 3.6では略して "f-strings")で、より簡潔な構文でこれを書くことが可能になりました。

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

質問の例では、このようになります。

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

あなたが投稿したすべてのコードが何をするのか正確にはわからないが、タイトルにある質問に答えるために、strを通常の文字列concat関数として使用することができる。

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

それが役立つことを願っています!

13
goggin13

一般的には、次のようにして文字列を作成することができます。

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

私はこれを拡張したものが必要でした。文字列に単一の数字を埋め込む代わりに、 'file1.pdf'、 'file2.pdf'などの形式の一連のファイル名を生成する必要がありました。働いた:

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

文字列に複数の値を入れたい場合はformatを利用できます。

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

文字列hanning123.pdfになります。これは任意の配列で実行できます。

2
Jonathan R

あなただけを使用してnun変数を文字列にキャストする必要があります

str(num)
0
Ole