<- all posts

PythonのF-stringにJavaScriptを埋め込んでSyntaxError

2026年4月22日

何が起きたか

Pythonのf-string内でHTMLテンプレートを構築しているファイルに、sedコマンドでJavaScriptコードを挿入した。

結果、SyntaxErrorが発生した。

原因

Pythonのf-stringは{}を変数展開として解釈する。JavaScriptの{}も構文として頻出する。sedで注入したJSコードの中の{}が、Pythonのf-stringパーサーに拾われてエラーになった。

f-stringの中で波括弧をリテラルとして使うには{{}}にエスケープする必要がある。しかしsedで外部から注入する場合、このエスケープは自動では行われない。

解決策

JSコードをPythonのテンプレート内に直接埋め込むのをやめた。代わりに外部JSファイルとして作成し、<script src="/vc.js"></script>で読み込む方式に変更した。

この方法には他のメリットもある。JSファイルはブラウザにキャッシュされるし、Python側のテンプレートが見やすくなる。

学び