こんにちは、PyQサポートです。
今回は、 NameError: name 're' is not defined
というエラーの原因と解消方法を紹介します。
質問:NameError: name 're' is not defined を解消する方法を教えてください
NameError: name 're' is not defined
とエラーが表示されました。
このエラーの原因がわからないので教えてください。
入力した内容(コード)
pattern = re.compile(r"[\d]+") result = pattern.search("123456abcdef") print(result.group(0))
出たエラー(実行結果)
Traceback (most recent call last): File "sample.py", line 1, in <module> pattern = re.compile(r"[\d]+") NameError: name 're' is not defined
回答:reモジュールをimportしていないために起きたエラーです
NameError: name 're' is not defined
は、エラーが起こった原因を表しています。
日本語に訳すと「're'という名前が定義されていない」という意味になります。
この原因は、re
モジュールが使えるようになっていないことです。
Pythonには、新たにインストールしなくても使用できる標準ライブラリが用意されています。
これらをインポートしたものを モジュール といいます。
モジュールを使用する場合は、該当のモジュールを import
する必要があります。
正規表現を扱うための re
モジュールも、使用前にインポートする必要があります。
エラーが出たコードを修正すると以下のようになります。ファイルの先頭に import re
を追加しました。
import re pattern = re.compile(r"[\d]+") result = pattern.search("123456abcdef") print(result.group(0))
実行結果
123456
エラーが NameError: name XX is not defined
の場合、以下のような原因が考えられます。
XX
がモジュール名なら、そのモジュールがインポートされていないXX
が変数名や関数名なら、定義されてないXX
のつづり間違い
このようなエラーが発生した場合は、発生箇所より前のコードを見直して、 XX
のための必要な処理が書かれているかを確認しましょう。
今回の実装で使用している re
モジュールの使い方については以下もご覧ください。
正規表現に関する他の記事
その他のNameError解説
エラーが出た時の考え方
学習を重ねてくると、「プロのエンジニアはエラーをどのように解決するのだろう?」という疑問が湧いて来ます。
ここでは、あなたのPythonプログラミングのレベル上げに役立つ記事、「エンジニアの「プロの所作」04」を紹介します。
この記事では、「プロはエラーをどのように捉えて、どのように対処しているのか」ということをプロの目線で解説しています。
よりレベルアップしたい方は読んでみてください!
blog.pyq.jp
エンジニアの「プロの所作」を読むとどんなことが理解できるか
- 「どこで」エラーが起きていて、「どうやって」エラーを直すかがわかり、「どこを直して」対応するといいか考えられるようになります。
- 記事と同じような場面に遭遇したときにも応用がきくようになります。