Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

【Pythonお悩み解決】`SyntaxError: f-string: expecting '}'`とは何ですか?

f:id:Arty_Mireiyu:20220330145632p:plain

こんにちは、PyQサポートです。

今回は SyntaxError: f-string: expecting '}' というエラーの意味と、その解消方法を解説します。
文字列の作成時にこのようなエラーが出ることがあります。
早速、質問を見ていきましょう。

質問 SyntaxError: f-string: expecting '}'というエラーはどういうものですか?

SyntaxError: f-string: expecting '}' というエラーが出ました。
どのように直したら良いでしょうか?

入力した内容(コード)

date = "2022-04-06"
print(f"今日は{date")

出たエラー(実行結果)

Python 3.10 で実行した結果

  File "<stdin>", line 1
    print(f"今日は{date")
                     ^
SyntaxError: f-string: expecting '}'

回答 f-stringのコード中に}が不足していることを表しています

エラーの原因は、f"今日は{date"}が不足しているからです。
エラーの説明も「f-stringのdateの後に}を期待」となっています。
エラーを解消するには、下記のようにdateの後に}を追加します。

date = "2022-04-06"
print(f"今日は{date}")

実行結果

今日は2022-04-06

Python文法の解説:f-strings

f"..."のような記述をf-stringsといいます。
通常の文字列との違いは、文字列中の{}内にPythonのコードが書けることです。
Pythonでは、f-strings中に{が出てきたら、}までを抽出しようとします。そのときに、}が存在しないと文法エラー(SyntaxError)になります。

エラーを解消したコードでは、{}内はdateという変数になっています。
{}内にはPythonのコードが書けるので、下記のように変数以外も書くことができます。

print(f"今日は{date[:4] * 2}")

実行結果

今日は20222022

date[:4] * 2は、文字列の先頭4文字を2回繰り返した文字列になります。

Copyright ©2017- BeProud Inc. All rights reserved.