Python学習チャンネル by PyQ

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

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

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

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

今回はSyntaxError: f-string: unterminated stringというエラーの意味と、その解消方法を解説します。 f-stringsを使うとこのようなエラーになることがあります。早速、質問を見ていきましょう。

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

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

入力した内容(コード)

python
my_data = {"age": 20}
print(f"I'm {my_data['age]} years old.")

出たエラー(実行結果)

Python 3.10 で実行した結果です。

  File "/Users/pyq/my_data.py", line 3
    print(f"I'm {my_data['age]} years old.")
                                           ^
SyntaxError: f-string: unterminated string

回答:f-stringの{}の中で文字列が閉じてないことを表しています

f-stringsを使うと、文字列中の{}内にPythonのを記述できます。

この式は単に変数名のみを記述するだけでなく、もっと複雑な式も記述できます。 今回の場合は、my_data["age"]の値を文字列に埋め込みたかったのでしょう。

これをf-stringsに埋め込むには、{my_data["age"]}と書かねばなりません。

しかし文字列を表す"は、すでにf""のほうで使ってしまっているため、{}の中では使えません。代わりに{}の中では、{my_data['age']}のように文字列に'を使うことでこの問題を回避できます。

さてここで、エラーメッセージを確認してみましょう。

SyntaxError: f-string: unterminated string

SyntaxErrorとあるので文法エラーです。

どのようなエラーか見てみると、f-string: unterminated stringとあります。これはf-stringsについて「文字列が終わっていない」ということを表しています。

コードのf-stringsの部分だけに注目してみましょう。

f"I'm {my_data['age]} years old."

f-strings自体は"で囲んでいるので、問題なさそうです。

しかし、{}の中をみると{my_data['age]}となっており、キーとして指定した文字列age'で閉じていません。そのため、「文字列が終わっていない」というエラーになってしまったのです。

{my_data['age']}のように、きちんと文字列age'で囲めば問題は解消します。

修正後のコードは以下のとおりです。

python
my_data = {"age": 20}
print(f"I'm {my_data['age']} years old.")

実行結果

I'm 20 years old.

f-stringsについては、他の記事でも解説しています。

blog.pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.