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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。