Python学習チャンネル by PyQ

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

【Pythonお悩み解決】NameError: name 're' is not defined を解消する方法を教えてください

こんにちは、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 モジュールの使い方については以下もご覧ください。

正規表現に関する他の記事

blog.pyq.jp

その他のNameError解説

blog.pyq.jp

エラーが出た時の考え方

学習を重ねてくると、「プロのエンジニアはエラーをどのように解決するのだろう?」という疑問が湧いて来ます。
ここでは、あなたのPythonプログラミングのレベル上げに役立つ記事、「エンジニアの「プロの所作」04」を紹介します。
この記事では、「プロはエラーをどのように捉えて、どのように対処しているのか」ということをプロの目線で解説しています。
よりレベルアップしたい方は読んでみてください!
blog.pyq.jp

エンジニアの「プロの所作」を読むとどんなことが理解できるか

  • 「どこで」エラーが起きていて、「どうやって」エラーを直すかがわかり、「どこを直して」対応するといいか考えられるようになります。
  • 記事と同じような場面に遭遇したときにも応用がきくようになります。

関連リンク

blog.pyq.jp

blog.pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.