Code Fix

初級

SyntaxError: unterminated string literal の原因と直し方

文字列を開いたクォートと同じ種類で閉じ忘れたときに出るエラーです。シングルクォートとダブルクォートを混在させたときにも起きます。

エラーメッセージの読み方

  File "main.py", line 1
main.py
ファイル名
1
行番号 — Pythonが構文解析を諦めた位置
SyntaxError
エラークラス — 実行前の構文チェックで検出されました
unterminated string literal (detected at line 1)
内容 — 期待していたもの、または見つけられなかったもの

このエラーが出る典型パターン

パターン1

 1  name = "Tom 
               ^
 2  print(name)
File "main.py", line 1 name = "Tom ^ SyntaxError: unterminated string literal (detected at line 1)

文字列は開いたクォートと同じ種類のクォートで閉じる必要があります。閉じ忘れると、どこまでが文字列かPythonは判断できません。

直し方: (空)" にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  msg = 'hi 
             ^
 2  print(msg)
File "main.py", line 1 msg = 'hi ^ SyntaxError: unterminated string literal (detected at line 1)

シングルクォートで始めた文字列はシングルクォートで閉じます。ダブルクォートと混ぜることはできません。

直し方: (空)' にします。

この問題を解いてみる →

パターン3

 1  print("hello )
                ^
File "main.py", line 1 print("hello) ^ SyntaxError: unterminated string literal (detected at line 1)

閉じ括弧の前に閉じクォートを忘れると、文字列がそのまま続いていると解釈され、行末や次の記号まで巻き込まれます。

直し方: (空)" にします。

この問題を解いてみる →

よくある誤解

クォートの種類を途中で変えても閉じられると思われがちですが、開いたときと同じ種類のクォートでなければ文字列は終わりません。

まとめ

SyntaxError: unterminated string literalは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)