<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ナノトイラボ</title>
	<atom:link href="https://nano-toy-lab.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://nano-toy-lab.com</link>
	<description>エンジニアを目指す人を応援するサイト</description>
	<lastBuildDate>Wed, 22 Jul 2026 00:18:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://nano-toy-lab.com/wp-content/uploads/2021/04/cropped-245f987f1763f521995a7b5f2a2983b7-scaled-1-32x32.jpg</url>
	<title>ナノトイラボ</title>
	<link>https://nano-toy-lab.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://nano-toy-lab.com/feed/"/>
	<item>
		<title>【Python】例外処理（try-except）の使い方を初心者向けに徹底解説！エラーで止まらないプログラムを書く</title>
		<link>https://nano-toy-lab.com/python/python-try-except/</link>
					<comments>https://nano-toy-lab.com/python/python-try-except/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 22 Jul 2026 00:15:14 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-try-except/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-10-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの例外処理（try-except）を初心者向けに徹底解説。基本構文からelse・finally、複数例外の処理、raiseによる例外発生まで、動くコードと実行結果つきでエラーに強いプログラムの書き方が身につきます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-10-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">プログラムを書いていると、「実行した瞬間にエラーが出て止まってしまった」という経験は誰にでもあります。特にユーザーの入力やファイルの読み込みを扱うプログラムでは、想定外の値が来るだけで処理が止まってしまいます。そんなときに役立つのが <strong>例外処理（try-except）</strong> です。</p>
<p class="wp-block-paragraph">この記事では、Pythonの例外処理について、基本の <code>try-except</code> 構文から、<code>else</code>・<code>finally</code>、複数例外の処理、<code>raise</code> による例外の発生まで、初心者の方にも分かりやすく解説します。実際に動くコードと実行結果を見ながら、エラーに強いプログラムの書き方を身につけていきましょう。</p>
<h2 class="wp-block-heading" id="i-0">例外処理とは？エラーでプログラムが止まる問題</h2>
<p class="wp-block-paragraph">Pythonでは、プログラムの実行中に問題が起きると「例外（Exception）」が発生します。例外が発生したまま何もしないでいると、プログラムはその場で強制終了してしまいます。</p>
<p class="wp-block-paragraph">例えば、次のように文字列を数値に変換しようとすると <code>ValueError</code> という例外が発生します。</p>
<pre class="wp-block-code"><code># 数字ではない文字列を数値に変換しようとすると…
number = int("abc")
# ここでValueErrorが発生し、プログラムが止まってしまう</code></pre>
<p class="wp-block-paragraph">このとき実際には <code>ValueError: invalid literal for int() with base 10</code> のようなメッセージが表示されます。</p>
<p class="wp-block-paragraph">このように、途中でプログラムが止まってしまうと、その後の処理がすべて実行されなくなります。例外処理を使うと、エラーが起きても<strong>プログラムを止めずに、代わりの処理を実行する</strong>ことができます。</p>
<h2 class="wp-block-heading" id="i-1">try-exceptの基本構文</h2>
<p class="wp-block-paragraph">例外処理の基本は <code>try</code> と <code>except</code> です。<code>try</code> ブロックに「エラーが起きるかもしれない処理」を書き、<code>except</code> ブロックに「エラーが起きたときの処理」を書きます。</p>
<pre class="wp-block-code"><code>try:
    number = int(input("数字を入力してください: "))
    print(number * 2)
except ValueError:
    print("数字ではない値が入力されました")</code></pre>
<p class="wp-block-paragraph">この例では、ユーザーが「5」と入力すれば <code>10</code> が表示されますが、「abc」のように数字でない値を入力しても、プログラムは止まらずに「数字ではない値が入力されました」と表示されます。エラーで落ちる代わりに、丁寧なメッセージを返せるわけです。</p>
<h2 class="wp-block-heading" id="i-2">例外の種類を指定してキャッチする</h2>
<p class="wp-block-paragraph">例外にはたくさんの種類があります。よく出会うものをいくつか挙げてみましょう。</p>
<ul class="wp-block-list"><li><code>ValueError</code>：値が不適切なとき（例：int(“abc”)）</li><li><code>ZeroDivisionError</code>：0で割り算をしたとき</li><li><code>TypeError</code>：型が合わない演算をしたとき</li><li><code>FileNotFoundError</code>：指定したファイルが存在しないとき</li><li><code>KeyError</code>：辞書に存在しないキーを指定したとき</li></ul>
<p class="wp-block-paragraph">例えば、0での割り算は <code>ZeroDivisionError</code> になります。</p>
<pre class="wp-block-code"><code>try:
    result = 10 / 0
except ZeroDivisionError:
    print("0で割ることはできません")
# 出力: 0で割ることはできません</code></pre>
<p class="wp-block-paragraph">なお、<code>int()</code> などの型変換でエラーが起きやすいポイントについては、<a href="https://nano-toy-lab.com/python/python-type-conversion/">Pythonの型変換（キャスト）の使い方を解説した記事</a>もあわせて読むと理解が深まります。どんなときに <code>ValueError</code> が出るのかがイメージしやすくなりますよ。</p>
<p class="wp-block-paragraph">例外処理を意識してコードを書けるようになると、一気に「実務で通用するコード」に近づきます。とはいえ、独学だと「なぜエラーになるのか」「どう直せばいいのか」で手が止まってしまいがちですよね。もし独学で伸び悩みを感じているなら、現役エンジニアに質問できる環境を用意するのも一つの手です。マンツーマンで学べるスクールについては、<a href="https://nano-toy-lab.com/python/techacademy/">TechAcademyの評判を辛口レビューも含めて徹底解説した記事</a>で詳しくまとめているので、独学の次の一歩として参考にしてみてください。</p>
<h2 class="wp-block-heading" id="i-3">elseとfinallyの使い方</h2>
<p class="wp-block-paragraph"><code>try-except</code> には、<code>else</code> と <code>finally</code> を追加できます。<code>else</code> は「例外が起きなかったとき」に実行され、<code>finally</code> は「例外の有無にかかわらず必ず」実行されます。</p>
<pre class="wp-block-code"><code>try:
    f = open("data.txt", "r", encoding="utf-8")
except FileNotFoundError:
    print("ファイルが見つかりません")
else:
    print("ファイルを正常に開けました")
    f.close()
finally:
    print("処理を終了します")</code></pre>
<p class="wp-block-paragraph"><code>finally</code> は、ファイルを閉じたり後片づけをしたりする処理を書くのに便利です。ただし、ファイル操作については <code>with</code> 構文を使うと自動でクローズしてくれるので、より安全でスマートに書けます。詳しくは <a href="https://nano-toy-lab.com/python/python-with-statement/">with構文の使い方を解説した記事</a>を参考にしてください。</p>
<h2 class="wp-block-heading" id="i-4">複数の例外をまとめて処理する</h2>
<p class="wp-block-paragraph">複数の種類の例外を同じように処理したい場合は、<code>except</code> にタプルで例外を並べて指定できます。また <code>as</code> を使うと、エラーメッセージの内容を受け取れます。</p>
<pre class="wp-block-code"><code>try:
    value = int("abc")
except (ValueError, TypeError) as e:
    print(f"エラーが発生しました: {e}")
# 出力: エラーが発生しました: invalid literal for int() with base 10: 'abc'</code></pre>
<p class="wp-block-paragraph"><code>as e</code> で受け取った例外オブジェクトを <code>print</code> すると、具体的なエラー内容が確認できます。デバッグのときにとても役立ちます。</p>
<h2 class="wp-block-heading" id="i-5">raiseで自分から例外を発生させる</h2>
<p class="wp-block-paragraph">自分で意図的に例外を発生させたいときは <code>raise</code> を使います。関数に不正な値が渡されたときに、あえてエラーを出して呼び出し側に知らせる、といった使い方をします。</p>
<pre class="wp-block-code"><code>def set_age(age):
    if age &lt; 0:
        raise ValueError("年齢に負の数は指定できません")
    return age

try:
    set_age(-5)
except ValueError as e:
    print(e)
# 出力: 年齢に負の数は指定できません</code></pre>
<p class="wp-block-paragraph">このように <code>raise</code> を使うと、「想定外の値はここではじく」という防御的なプログラムが書けるようになります。</p>
<h2 class="wp-block-heading" id="i-6">例外処理を使うときの注意点</h2>
<ul class="wp-block-list"><li><code>try</code> ブロックはできるだけ小さく保ち、エラーが起きうる処理だけを囲むようにしましょう。</li><li>例外の種類を指定せず <code>except:</code> だけで書くと、想定外のエラーまで握りつぶしてしまい、バグの発見が遅れます。</li><li>エラーを <code>except</code> で受け取ったのに何もしない（<code>pass</code> だけ）のは避けましょう。最低限ログやメッセージを残すのがおすすめです。</li><li>例外処理は「起こりうるエラーへの備え」です。本来直すべきバグを隠すために使わないよう注意しましょう。</li></ul>
<h2 class="wp-block-heading" id="i-7">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p class="wp-block-paragraph">例外処理のように「実務で本当に必要な書き方」は、独学だけだと後回しになりがちです。未経験からPythonを最短で身につけたい、エラーで詰まったときにすぐ質問できる環境がほしいという方は、マンツーマン指導のスクールを検討してみるのも良い選択です。無料カウンセリングで学習プランや転職サポートの相談だけしてみる、という使い方もできます。</p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<h2 class="wp-block-heading" id="i-8">まとめ</h2>
<p class="wp-block-paragraph">今回はPythonの例外処理（try-except）について解説しました。ポイントを振り返っておきましょう。</p>
<ul class="wp-block-list"><li><code>try-except</code> を使うと、エラーが起きてもプログラムを止めずに処理を続けられる</li><li><code>except</code> には <code>ValueError</code> や <code>ZeroDivisionError</code> など、キャッチしたい例外の種類を指定する</li><li><code>else</code> は例外が起きなかったとき、<code>finally</code> は必ず実行される</li><li>複数の例外はタプルでまとめて指定でき、<code>as</code> でエラー内容を受け取れる</li><li><code>raise</code> を使えば、自分から意図的に例外を発生させられる</li><li><code>try</code> ブロックは小さく、例外は種類を指定して受け取るのが安全</li></ul>
<p class="wp-block-paragraph">例外処理を使いこなせるようになると、ユーザーの入力ミスや予期しないデータにも動じない、丈夫なプログラムが書けるようになります。ぜひ実際に手を動かして試してみてください。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-try-except/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】JSONの扱い方を初心者向けに徹底解説！json.dumps・json.loadsでデータを読み書きする</title>
		<link>https://nano-toy-lab.com/python/python-json/</link>
					<comments>https://nano-toy-lab.com/python/python-json/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 20 Jul 2026 00:13:55 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/?p=7410</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-9-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Python標準のjsonモジュールを使ったJSONの扱い方を初心者向けに解説。json.dumps・loadsでの辞書とJSONの相互変換、ファイルの読み書き、日本語の文字化け対策（ensure_ascii）まで実例つきで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-9-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">APIからデータを取得したり、設定ファイルを保存したりするとき、必ずと言っていいほど登場するのが「JSON（ジェイソン）」というデータ形式です。「なんとなく見たことはあるけれど、Pythonでどう読み書きすればいいのか分からない」という方も多いのではないでしょうか。</p>
<p class="wp-block-paragraph">この記事では、Python標準の<code>json</code>モジュールを使って、辞書とJSONを相互に変換する方法や、JSONファイルの読み書き、日本語が文字化けしないための設定まで、初心者の方にも分かりやすく徹底解説します。コードはすべて実際に動く内容なので、手を動かしながら読み進めてみてください。</p>
<h2 class="wp-block-heading" id="i-0">JSONとは？Pythonでよく使われる理由</h2>
<p class="wp-block-paragraph">JSON（JavaScript Object Notation）は、データを「キーと値」のペアで表現する軽量なデータ形式です。もともとはJavaScript由来ですが、今では言語を問わずデータのやり取りに使われる共通フォーマットになっています。</p>
<p class="wp-block-paragraph">たとえば、次のような文字列がJSONです。Pythonの<a href="https://nano-toy-lab.com/python/python-dict/">辞書（dict）</a>にそっくりな見た目をしていることに気づくと思います。</p>
<pre class="wp-block-code"><code>{
  "name": "田中",
  "age": 28,
  "skills": ["Python", "SQL"]
}</code></pre>
<p class="wp-block-paragraph">PythonでJSONがよく使われるのは、Webアプリのデータ通信（REST API）、設定ファイル、ログの保存など、実務のあらゆる場面で登場するからです。JSONを扱えるようになると、外部サービスとのデータ連携が一気に身近になります。</p>
<h2 class="wp-block-heading" id="i-1">jsonモジュールの基本（4つの関数を覚えよう）</h2>
<p class="wp-block-paragraph">Pythonでは標準ライブラリの<code>json</code>モジュールを<code>import</code>するだけでJSONを扱えます。追加インストールは不要です。まずは覚えるべき4つの関数を整理しましょう。</p>
<ul class="wp-block-list"><li><code>json.dumps()</code>：Pythonのオブジェクト → JSON<strong>文字列</strong>に変換</li><li><code>json.loads()</code>：JSON<strong>文字列</strong> → Pythonのオブジェクトに変換</li><li><code>json.dump()</code>：Pythonのオブジェクト → JSON<strong>ファイル</strong>に書き込み</li><li><code>json.load()</code>：JSON<strong>ファイル</strong> → Pythonのオブジェクトに読み込み</li></ul>
<p class="wp-block-paragraph">末尾に<strong>s</strong>が付く（dumps / loads）と「文字列（string）」を相手にする、付かない（dump / load）と「ファイル」を相手にする、と覚えると混乱しません。</p>
<h3 class="wp-block-heading" id="i-2">辞書 → JSON文字列（json.dumps）</h3>
<p class="wp-block-paragraph">Pythonの辞書をJSON形式の文字列に変換するには<code>json.dumps()</code>を使います。</p>
<pre class="wp-block-code"><code>import json

# Pythonの辞書
user = {"name": "田中", "age": 28, "skills": ["Python", "SQL"]}

# 辞書 → JSON文字列
json_str = json.dumps(user)
print(json_str)
# {"name": "\u7530\u4e2d", "age": 28, "skills": ["Python", "SQL"]}

print(type(json_str))
# &lt;class 'str'&gt;</code></pre>
<p class="wp-block-paragraph">変換結果は<code>str</code>型（文字列）になります。日本語が<code>\u7530\u4e2d</code>のように表示されていますが、これは後ほど解説する設定で読みやすくできるので安心してください。</p>
<h3 class="wp-block-heading" id="i-3">JSON文字列 → 辞書（json.loads）</h3>
<p class="wp-block-paragraph">逆に、JSON形式の文字列をPythonの辞書に戻すには<code>json.loads()</code>を使います。APIから返ってきた文字列を扱うときの定番です。</p>
<pre class="wp-block-code"><code>import json

json_str = '{"name": "田中", "age": 28, "skills": ["Python", "SQL"]}'

# JSON文字列 → 辞書
data = json.loads(json_str)

print(data["name"])   # 田中
print(data["age"])    # 28
print(type(data))     # &lt;class 'dict'&gt;</code></pre>
<p class="wp-block-paragraph"><code>json.loads()</code>で辞書に戻せば、あとは<a href="https://nano-toy-lab.com/python/python-dict/">辞書の基本操作</a>と同じようにキーを指定して値を取り出せます。数値は数値、リストはリストとして正しく復元される点もポイントです。</p>
<p class="wp-block-paragraph">ここまでで「PythonでJSONを読み書きする感覚」がつかめてきたのではないでしょうか。こうした基礎が身についてくると、次は「APIを叩いて実際のWebサービスとデータをやりとりするアプリをPythonで作りたい」という気持ちが湧いてくるはずです。独学でそこから先に伸び悩んだときは、Pythonを実践的に学べる<a href="https://nano-toy-lab.com/programming-school/techgym/">テックジムのようなプログラミングスクールの評判・料金をまとめた記事</a>も参考にしてみてください。学習の進め方の選択肢が広がります。</p>
<h2 class="wp-block-heading" id="i-4">JSONファイルの読み書き（dump / load）</h2>
<p class="wp-block-paragraph">実務では、JSONを文字列としてではなく「ファイル」として保存・読み込みする場面が多くあります。ここでは<a href="https://nano-toy-lab.com/python/python-with-statement/">with構文</a>と組み合わせて、ファイルを安全に扱う方法を見ていきましょう。</p>
<h3 class="wp-block-heading" id="i-5">ファイルへ書き込む（json.dump）</h3>
<pre class="wp-block-code"><code>import json

data = {"title": "ナノトイラボ", "tags": ["Python", "初心者"]}

# data.json というファイルに書き込む
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# data.json が作成され、整形された状態で保存される</code></pre>
<p class="wp-block-paragraph"><code>with open(...)</code>を使うと、処理が終わったあとファイルを自動で閉じてくれます。ファイル操作の基本なので、まだ不安な方は<a href="https://nano-toy-lab.com/python/python-with-statement/">with構文の解説記事</a>もあわせて確認しておくと安心です。</p>
<h3 class="wp-block-heading" id="i-6">ファイルから読み込む（json.load）</h3>
<pre class="wp-block-code"><code>import json

with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

print(data["title"])    # ナノトイラボ
print(data["tags"][0])  # Python</code></pre>
<p class="wp-block-paragraph"><code>json.load()</code>で読み込むと、ファイルの中身がそのままPythonの辞書として手に入ります。あとは通常の辞書と同じように扱えます。</p>
<h2 class="wp-block-heading" id="i-7">日本語の文字化けを防ぐ（ensure_ascii=False）</h2>
<p class="wp-block-paragraph">先ほど<code>json.dumps()</code>で日本語が<code>\u7530\u4e2d</code>のように表示されたのを覚えているでしょうか。これは初期設定で日本語がエスケープされるためです。<code>ensure_ascii=False</code>を指定すると、日本語をそのまま出力できます。</p>
<pre class="wp-block-code"><code>import json

user = {"name": "田中", "age": 28}

# そのまま（日本語がエスケープされる）
print(json.dumps(user))
# {"name": "\u7530\u4e2d", "age": 28}

# ensure_ascii=False で日本語をそのまま表示
print(json.dumps(user, ensure_ascii=False))
# {"name": "田中", "age": 28}</code></pre>
<h2 class="wp-block-heading" id="i-8">見やすく整形する（indent）</h2>
<p class="wp-block-paragraph"><code>indent</code>に数値を指定すると、その分だけインデント（字下げ）して見やすく整形できます。設定ファイルなど、人間が読むJSONを出力するときに便利です。</p>
<pre class="wp-block-code"><code>import json

user = {"name": "田中", "age": 28, "skills": ["Python", "SQL"]}

print(json.dumps(user, ensure_ascii=False, indent=2))
# {
#   "name": "田中",
#   "age": 28,
#   "skills": [
#     "Python",
#     "SQL"
#   ]
# }</code></pre>
<h2 class="wp-block-heading" id="i-9">よくあるエラーと対処法</h2>
<p class="wp-block-paragraph">JSONを扱うときによく遭遇するのが<code>JSONDecodeError</code>です。これはJSONの書式が正しくないときに発生します。</p>
<pre class="wp-block-code"><code>import json

# 末尾に余分なカンマがある不正なJSON
broken = '{"name": "田中",}'

data = json.loads(broken)
# json.decoder.JSONDecodeError: Expecting property name
# enclosed in double quotes ...</code></pre>
<p class="wp-block-paragraph">JSONでは、末尾の余分なカンマや、シングルクォートでの囲みは認められていません。文字列は必ずダブルクォートで囲む必要があります。また、数値が文字列になっているといった型の食い違いにも注意しましょう。型の扱いに不安がある方は<a href="https://nano-toy-lab.com/python/python-type-conversion/">型変換（キャスト）の解説記事</a>も参考になります。</p>
<h2 class="wp-block-heading" id="i-10">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph">JSONの読み書きができるようになると、API連携やデータ処理など「実際に動くもの」を作れる範囲がぐっと広がります。一方で、独学だとエラーの原因が分からず何時間も止まってしまう、体系的な学習の順番が分からない、といった壁にぶつかりがちです。</p>
<p class="wp-block-paragraph">「未経験からPythonを本気で習得したい」「できれば転職やキャリアにつなげたい」という方は、マンツーマン指導で学べるスクールを検討するのも一つの手です。プロ講師に直接質問できる環境は、独学でのつまずきを一気に解消してくれます。まずは無料カウンセリングで、自分に合った学習プランを相談してみてはいかがでしょうか。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<h2 class="wp-block-heading" id="i-11">まとめ</h2>
<p class="wp-block-paragraph">今回は、Pythonの<code>json</code>モジュールを使ったJSONの扱い方を解説しました。最後に要点を振り返っておきましょう。</p>
<ul class="wp-block-list"><li>JSONは「キーと値」でデータを表す共通フォーマットで、Pythonの辞書とよく似ている</li><li><code>json.dumps()</code>で辞書→JSON文字列、<code>json.loads()</code>でJSON文字列→辞書に変換できる</li><li>ファイルは<code>json.dump()</code>で書き込み、<code>json.load()</code>で読み込む（with構文と併用が基本）</li><li>日本語の文字化けは<code>ensure_ascii=False</code>、整形は<code>indent</code>で解決できる</li><li>書式ミスがあると<code>JSONDecodeError</code>が出るので、カンマやクォートに注意する</li></ul>
<p class="wp-block-paragraph">JSONはWeb開発やデータ処理の基礎となる大切なスキルです。ぜひ手を動かして、自分のコードに取り入れてみてください。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-json/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】正規表現（reモジュール）の使い方を初心者向けに徹底解説！search・findall・subを完全マスター</title>
		<link>https://nano-toy-lab.com/python/python-regex-re-module/</link>
					<comments>https://nano-toy-lab.com/python/python-regex-re-module/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Fri, 17 Jul 2026 00:10:43 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-regex-re-module/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-8-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの正規表現（reモジュール）の使い方を初心者向けに解説。re.search・match・findall・subの違いから、グループ化・メタ文字・貪欲マッチの落とし穴まで、動くコードと実行結果つきで徹底解説します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-8-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「ログの中からエラー行だけを抜き出したい」「入力されたメールアドレスの形式をチェックしたい」「電話番号をまとめてマスキングしたい」——プログラミングを続けていると、こうした<strong>文字列のパターン検索</strong>に必ずぶつかります。</p>
<p class="wp-block-paragraph">ひとつずつ <code>if</code> 文で条件を書いていくと、コードはあっという間に読めないほど長くなってしまいます。そんなときに絶大な威力を発揮するのが<strong>正規表現（regular expression）</strong>と、Python標準の <code>re</code> モジュールです。</p>
<p class="wp-block-paragraph">正規表現は「記号だらけで難しそう」と敬遠されがちですが、実際によく使うのは<strong>ほんの一握りのパターンと4つの関数だけ</strong>です。この記事では、現役SEの視点から、<code>re.search</code>・<code>re.match</code>・<code>re.findall</code>・<code>re.sub</code> の使い方を、実際に動くコードと実行結果を示しながら初心者向けに徹底解説します。読み終えるころには、実務で使うレベルの文字列処理が書けるようになりますよ。</p>

<h2 class="wp-block-heading" id="i-0">正規表現とは？何ができるのか</h2>
<p class="wp-block-paragraph">正規表現とは、<strong>「文字列のパターンを、記号を使って表現するための書き方（ルール）」</strong>のことです。「数字が3つ並んで、ハイフンがあって、また数字が4つ並ぶ」といった<em>あいまいな条件</em>を、たった一行で表現できます。</p>
<p class="wp-block-paragraph">たとえば「電話番号らしき文字列」は、正規表現ではこう書けます。</p>
<pre class="wp-block-code"><code>\d{2,4}-\d{4}-\d{4}</code></pre>
<p class="wp-block-paragraph">これだけで「2〜4桁の数字 – 4桁の数字 – 4桁の数字」という意味になります。<code>if</code> 文で同じことを書こうとしたら何十行にもなるところが、1行で済んでしまうわけです。</p>
<p class="wp-block-paragraph">正規表現が活躍する代表的な場面は次のとおりです。</p>
<ul class="wp-block-list"><li><strong>検索</strong>：大量のログから ERROR 行だけを抜き出す</li><li><strong>検証（バリデーション）</strong>：メールアドレスや郵便番号の形式チェック</li><li><strong>抽出</strong>：文章の中から日付・URL・金額だけを取り出す</li><li><strong>置換</strong>：個人情報をマスキングする、表記ゆれを統一する</li><li><strong>分割</strong>：区切り文字が複数種類ある文字列をきれいに分ける</li></ul>
<p class="wp-block-paragraph">なお、単純な「この文字が含まれるか」「この文字で始まるか」程度の判定であれば、正規表現を持ち出さなくても標準の文字列メソッドで十分です。基本の使い分けについては<a href="https://nano-toy-lab.com/python/python-string-methods/">Pythonの文字列メソッドの使い方を徹底解説した記事</a>もあわせて読んでみてください。<strong>「文字列メソッドで書けるなら、まずはそちらを使う」</strong>のが読みやすいコードの鉄則です。</p>

<h2 class="wp-block-heading" id="i-1">reモジュールの基本｜importとraw文字列</h2>
<p class="wp-block-paragraph">Pythonで正規表現を使うには、標準ライブラリの <code>re</code> モジュールを <code>import</code> するだけです。追加インストールは一切不要なので、Pythonさえ入っていればすぐに試せます。</p>
<pre class="wp-block-code"><code>import re

text = "お問い合わせ先は support@example.com です"

# パターンにマッチする部分を探す
result = re.search(r"[\w.-]+@[\w.-]+", text)
print(result.group())
# 実行結果: support@example.com</code></pre>
<p class="wp-block-paragraph">たった3行で、文章の中からメールアドレスを取り出せました。</p>

<h3 class="wp-block-heading" id="i-2">パターンの前には必ず r を付ける（raw文字列）</h3>
<p class="wp-block-paragraph">先ほどのコードで、パターンが <code>r"..."</code> という形になっていたことに気づきましたか？ この <code>r</code> は<strong>raw文字列（ロー文字列）</strong>を表すもので、正規表現を書くときのお約束です。</p>
<p class="wp-block-paragraph">Pythonの文字列では <code>\n</code> が改行、<code>\t</code> がタブというように、バックスラッシュに特別な意味があります。一方、正規表現でも <code>\d</code>（数字）や <code>\w</code>（英数字）のようにバックスラッシュを多用します。この2つが衝突すると、バックスラッシュを二重に書く羽目になり、とても読みにくくなります。</p>
<pre class="wp-block-code"><code>import re

# raw文字列を使わない書き方（バックスラッシュが増えて読みにくい）
pattern_ng = "\\d{3}-\\d{4}"

# raw文字列を使った書き方（見たままでOK・こちらが推奨）
pattern_ok = r"\d{3}-\d{4}"

print(re.search(pattern_ok, "郵便番号は 100-0001 です").group())
# 実行結果: 100-0001</code></pre>
<p class="wp-block-paragraph"><strong>正規表現のパターンは、何も考えず先頭に <code>r</code> を付ける</strong>と覚えてしまいましょう。これだけでハマりどころを1つ回避できます。</p>
<h2 class="wp-block-heading" id="i-3">まず覚えるべき4つの関数</h2>
<p class="wp-block-paragraph"><code>re</code> モジュールにはたくさんの関数がありますが、実務でよく使うのは次の4つに集約されます。まずはこれだけ押さえれば十分です。</p>
<ul class="wp-block-list"><li><code>re.search()</code>…文字列<strong>全体</strong>からパターンを探す（最初の1件）</li><li><code>re.match()</code>…文字列の<strong>先頭</strong>がパターンと一致するか調べる</li><li><code>re.findall()</code>…マッチする箇所を<strong>すべて</strong>リストで取得する</li><li><code>re.sub()</code>…マッチした部分を<strong>置換</strong>する</li></ul>

<h3 class="wp-block-heading" id="i-4">re.search()｜どこかに含まれるか探す</h3>
<p class="wp-block-paragraph">もっとも出番が多いのが <code>re.search()</code> です。文字列全体を走査して、最初に見つかった箇所を<strong>マッチオブジェクト</strong>として返します。見つからなかった場合は <code>None</code> を返します。</p>
<pre class="wp-block-code"><code>import re

text = "注文番号: A-2026-0717 を確認しました"

m = re.search(r"[A-Z]-\d{4}-\d{4}", text)

if m:
    print("見つかりました:", m.group())   # マッチした文字列
    print("開始位置:", m.start())         # 開始インデックス
    print("終了位置:", m.end())           # 終了インデックス
else:
    print("見つかりませんでした")

# 実行結果:
# 見つかりました: A-2026-0717
# 開始位置: 6
# 終了位置: 17</code></pre>
<p class="wp-block-paragraph">ポイントは<strong>必ず <code>if m:</code> でマッチしたか確認してから <code>.group()</code> を呼ぶ</strong>ことです。マッチしなかったときは <code>None</code> が返るため、いきなり <code>.group()</code> を呼ぶと <code>AttributeError</code> になってしまいます。ここは初心者が最初につまずく定番ポイントです。</p>

<h3 class="wp-block-heading" id="i-5">re.match()｜先頭だけを調べる</h3>
<p class="wp-block-paragraph"><code>re.match()</code> は名前から「一致するか調べる関数」と誤解されやすいのですが、実際は<strong>文字列の先頭からマッチするか</strong>だけを見ます。途中にあってもマッチしません。</p>
<pre class="wp-block-code"><code>import re

text = "Python3 is fun"

print(re.match(r"Python", text))   # 先頭にあるのでマッチする
print(re.match(r"is", text))       # 先頭ではないのでマッチしない
print(re.search(r"is", text))      # searchなら途中でも見つかる

# 実行結果:
# &lt;re.Match object; span=(0, 6), match='Python'&gt;
# None
# &lt;re.Match object; span=(8, 10), match='is'&gt;</code></pre>
<p class="wp-block-paragraph">迷ったら <code>re.search()</code> を使えば間違いありません。<code>re.match()</code> は「入力値が指定した形式で始まっているか」を検証したいときに使う、と覚えておきましょう。</p>

<h3 class="wp-block-heading" id="i-6">re.findall()｜該当する箇所をすべて集める</h3>
<p class="wp-block-paragraph">マッチする箇所を<strong>まとめてリストで欲しい</strong>ときは <code>re.findall()</code> です。戻り値がそのままリストなので、そのまま <code>for</code> 文で回せて便利です。</p>
<pre class="wp-block-code"><code>import re

text = "本社は 03-1234-5678、大阪支社は 06-2222-3333、携帯は 090-8765-4321 です"

numbers = re.findall(r"\d{2,4}-\d{4}-\d{4}", text)
print(numbers)
# 実行結果: ['03-1234-5678', '06-2222-3333', '090-8765-4321']

for i, num in enumerate(numbers, 1):
    print(f"{i}件目: {num}")

# 実行結果:
# 1件目: 03-1234-5678
# 2件目: 06-2222-3333
# 3件目: 090-8765-4321</code></pre>
<p class="wp-block-paragraph">マッチが1件もなければ、空のリスト <code>[]</code> が返ります。<code>None</code> ではないので、<code>if numbers:</code> でそのまま判定できるのが <code>findall()</code> の気楽なところです。</p>

<h3 class="wp-block-heading" id="i-7">re.sub()｜パターンにマッチした部分を置換する</h3>
<p class="wp-block-paragraph">個人情報のマスキングや表記ゆれの統一で大活躍するのが <code>re.sub()</code> です。<code>str.replace()</code> は決まった文字列しか置換できませんが、<code>re.sub()</code> なら<strong>パターンで置換</strong>できます。</p>
<pre class="wp-block-code"><code>import re

text = "連絡先: 090-1234-5678 / 080-9999-0000"

# 電話番号をまとめてマスキングする
masked = re.sub(r"\d{3}-\d{4}-\d{4}", "***-****-****", text)
print(masked)
# 実行結果: 連絡先: ***-****-**** / ***-****-****

# 連続する空白を1つにまとめる（テキスト整形の定番）
messy = "Python    は  とても     便利です"
clean = re.sub(r"\s+", " ", messy)
print(clean)
# 実行結果: Python は とても 便利です</code></pre>
<p class="wp-block-paragraph">2つ目の「連続する空白を1つにまとめる」は、スクレイピングやCSV処理で拾ってきた汚いテキストを整形するときに本当によく使うテクニックです。ぜひ覚えておいてください。</p>

<h3 class="wp-block-heading" id="i-8">re.split()｜複数の区切り文字で分割する</h3>
<p class="wp-block-paragraph">おまけとして <code>re.split()</code> も紹介します。区切り文字が1種類だけなら標準の <code>split()</code> で十分ですが、<strong>「カンマでも、セミコロンでも、空白でも区切りたい」</strong>という場合は正規表現の出番です。</p>
<pre class="wp-block-code"><code>import re

text = "りんご, みかん;ぶどう  バナナ"

fruits = re.split(r"[,;\s]+", text)
print(fruits)
# 実行結果: ['りんご', 'みかん', 'ぶどう', 'バナナ']</code></pre>
<p class="wp-block-paragraph">区切り文字が1種類の場合の基本的な分割・結合については、<a href="https://nano-toy-lab.com/python/split-join/">Pythonで文字列を分割・結合する方法（split・join）の解説記事</a>で詳しく扱っています。取り出した後の一部分だけを切り出したいときは<a href="https://nano-toy-lab.com/python/python-slice/">スライスの使い方を解説した記事</a>も参考になりますよ。</p>

<p class="wp-block-paragraph">ここまでで基本の4関数はマスターできました。ただ、正規表現は「読んで分かる」と「自分で書ける」の間に、それなりの壁があるのも事実です。独学で手が止まってしまう、質問できる相手がいなくて時間だけが過ぎていく——そんな状態が続くようなら、学習環境そのものを見直すのも立派な選択肢です。<a href="https://nano-toy-lab.com/python/schools/">プログラミングスクール5選を比較した記事</a>では、無料体験のあるスクールを実際に体験したうえで比較しているので、独学と併用する判断材料としてのぞいてみてください。</p>
<h2 class="wp-block-heading" id="i-9">グループ化｜必要な部分だけを取り出す</h2>
<p class="wp-block-paragraph">正規表現の真価は<strong>グループ化</strong>で発揮されます。パターンの一部を <code>()</code> で囲むと、その部分だけを個別に取り出せるようになります。ログ解析ではこれが必須テクニックです。</p>
<pre class="wp-block-code"><code>import re

log = "2026-07-17 09:00:00 ERROR ディスク容量が不足しています"

m = re.search(r"(\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) (\w+)", log)

print(m.group(0))   # パターン全体
print(m.group(1))   # 1つ目の()
print(m.group(5))   # 5つ目の()
print(m.groups())   # すべてのグループをタプルで取得

# 実行結果:
# 2026-07-17 09:00:00 ERROR
# 2026
# ERROR
# ('2026', '07', '17', '09:00:00', 'ERROR')</code></pre>
<p class="wp-block-paragraph"><code>group(0)</code> がマッチ全体、<code>group(1)</code> 以降が左のカッコから順番に対応します。0始まりではなく<strong>1始まり</strong>である点に注意してください。</p>

<h3 class="wp-block-heading" id="i-10">名前付きグループでコードを読みやすくする</h3>
<p class="wp-block-paragraph"><code>group(3)</code> のような番号指定は、パターンを修正した瞬間に番号がずれてバグの温床になります。実務では <code>(?P&lt;名前&gt;...)</code> という<strong>名前付きグループ</strong>を使うのがおすすめです。</p>
<pre class="wp-block-code"><code>import re

log = "2026-07-17 09:00:00 ERROR ディスク容量が不足しています"

pattern = r"(?P&lt;date&gt;\d{4}-\d{2}-\d{2}) (?P&lt;time&gt;\d{2}:\d{2}:\d{2}) (?P&lt;level&gt;\w+) (?P&lt;message&gt;.+)"
m = re.search(pattern, log)

print(m.group("date"))
print(m.group("level"))
print(m.group("message"))
print(m.groupdict())

# 実行結果:
# 2026-07-17
# ERROR
# ディスク容量が不足しています
# {'date': '2026-07-17', 'time': '09:00:00', 'level': 'ERROR', 'message': 'ディスク容量が不足しています'}</code></pre>
<p class="wp-block-paragraph"><code>groupdict()</code> を使えば、結果をそのまま辞書として受け取れます。辞書の扱い方に不安がある方は、<a href="https://nano-toy-lab.com/python/python-dict/">辞書(dict)の使い方を徹底解説した記事</a>もあわせてどうぞ。数か月後の自分がコードを読み返したときに感謝するのは、間違いなく名前付きグループのほうです。</p>

<h2 class="wp-block-heading" id="i-11">最低限おさえたいメタ文字チートシート</h2>
<p class="wp-block-paragraph">正規表現の記号（メタ文字）は膨大にありますが、実務で使うのは以下でほぼ足ります。丸暗記せず、必要になったら見返す程度で十分です。</p>
<ul class="wp-block-list"><li><code>.</code>…任意の1文字（改行以外）</li><li><code>\d</code>…数字1文字（<code>[0-9]</code> と同じ）</li><li><code>\w</code>…英数字とアンダースコア1文字</li><li><code>\s</code>…空白文字（スペース・タブ・改行）</li><li><code>[abc]</code>…a か b か c のいずれか1文字</li><li><code>[^abc]</code>…a・b・c<strong>以外</strong>の1文字</li><li><code>[a-z]</code>…a〜zの範囲の1文字</li><li><code>*</code>…直前のパターンの0回以上の繰り返し</li><li><code>+</code>…直前のパターンの1回以上の繰り返し</li><li><code>?</code>…直前のパターンが0回か1回（＝省略可能）</li><li><code>{3}</code>…ちょうど3回、<code>{2,4}</code>…2〜4回の繰り返し</li><li><code>^</code>…文字列の先頭、<code>$</code>…文字列の末尾</li><li><code>|</code>…OR条件（<code>猫|犬</code> なら「猫」か「犬」）</li><li><code>()</code>…グループ化</li></ul>
<p class="wp-block-paragraph">なお <code>\d</code> を大文字にした <code>\D</code> は「数字<strong>以外</strong>」というように、<strong>大文字にすると意味が反転</strong>します（<code>\W</code>・<code>\S</code> も同様）。この法則を知っておくと覚える量が半分になりますよ。</p>

<h2 class="wp-block-heading" id="i-12">re.compile()｜同じパターンを何度も使うとき</h2>
<p class="wp-block-paragraph">同じパターンをループ内で何度も使う場合は、<code>re.compile()</code> であらかじめパターンをコンパイル（コンパイル済みオブジェクト化）しておくと、コードが読みやすくなり、実行速度の面でも有利です。</p>
<pre class="wp-block-code"><code>import re

# メールアドレスの形式チェック用パターンを1回だけ用意する
pattern = re.compile(r"^[\w.+-]+@[\w-]+\.[\w.-]+$")

emails = ["taro@example.com", "hanako@@example", "jiro@sub.example.co.jp"]

for e in emails:
    if pattern.match(e):
        print(f"{e} は有効な形式です")
    else:
        print(f"{e} は無効な形式です")

# 実行結果:
# taro@example.com は有効な形式です
# hanako@@example は無効な形式です
# jiro@sub.example.co.jp は有効な形式です</code></pre>
<p class="wp-block-paragraph">コンパイル済みオブジェクトからは、<code>pattern.search()</code>・<code>pattern.findall()</code>・<code>pattern.sub()</code> のように、これまで紹介した関数を同じ名前で呼び出せます。第1引数のパターンを渡さなくてよくなる、と理解しておけばOKです。</p>

<h3 class="wp-block-heading" id="i-13">フラグで挙動を変える</h3>
<p class="wp-block-paragraph">各関数の引数にフラグを渡すと、マッチのルールを変更できます。もっとも使うのは大文字小文字を区別しない <code>re.IGNORECASE</code> です。</p>
<pre class="wp-block-code"><code>import re

text = "Python python PYTHON"

print(re.findall(r"python", text))
# 実行結果: ['python']

print(re.findall(r"python", text, re.IGNORECASE))
# 実行結果: ['Python', 'python', 'PYTHON']</code></pre>
<p class="wp-block-paragraph">ほかにも <code>re.MULTILINE</code>（<code>^</code> と <code>$</code> を行単位で判定する）、<code>re.DOTALL</code>（<code>.</code> が改行にもマッチする）などがあります。複数行のログを1行ずつ判定したいときは <code>re.MULTILINE</code> が便利です。</p>
<h2 class="wp-block-heading" id="i-14">初心者がハマりやすい注意点3つ</h2>

<h3 class="wp-block-heading" id="i-15">1. 「欲張りマッチ」で余計な部分まで取れてしまう</h3>
<p class="wp-block-paragraph"><code>*</code> や <code>+</code> は、デフォルトで<strong>できるだけ長くマッチしようとする</strong>性質（貪欲マッチ）を持っています。これが意図しない結果を生む最大の原因です。</p>
<pre class="wp-block-code"><code>import re

html = "&lt;b&gt;太字&lt;/b&gt;と&lt;i&gt;斜体&lt;/i&gt;"

# 貪欲マッチ：最初の&lt;から最後の&gt;まで丸ごと取れてしまう
print(re.findall(r"&lt;.+&gt;", html))
# 実行結果: ['&lt;b&gt;太字&lt;/b&gt;と&lt;i&gt;斜体&lt;/i&gt;']

# 非貪欲マッチ：?を付けると最短でマッチする
print(re.findall(r"&lt;.+?&gt;", html))
# 実行結果: ['&lt;b&gt;', '&lt;/b&gt;', '&lt;i&gt;', '&lt;/i&gt;']</code></pre>
<p class="wp-block-paragraph">「なぜか想定より長く取れてしまう」と感じたら、<code>+?</code> や <code>*?</code> のように<strong><code>?</code> を付けて最短マッチにする</strong>——これを覚えておくだけで解決することがほとんどです。</p>

<h3 class="wp-block-heading" id="i-16">2. マッチしなかったときのNoneを忘れる</h3>
<p class="wp-block-paragraph">繰り返しになりますが、これが一番多いエラーです。<code>re.search()</code> と <code>re.match()</code> は、マッチしなければ <code>None</code> を返します。</p>
<pre class="wp-block-code"><code>import re

text = "数字が含まれていない文章です"

# NG例：マッチしないとAttributeErrorで落ちる
# print(re.search(r"\d+", text).group())
# AttributeError: 'NoneType' object has no attribute 'group'

# OK例：必ずNoneチェックをしてから使う
m = re.search(r"\d+", text)
if m:
    print("見つかった数字:", m.group())
else:
    print("数字は含まれていませんでした")

# 実行結果: 数字は含まれていませんでした</code></pre>
<p class="wp-block-paragraph">「マッチしないこともある」という前提でコードを書くクセをつけましょう。実務のデータは、こちらの想定どおりの形では絶対に届きません。</p>

<h3 class="wp-block-heading" id="i-17">3. なんでもかんでも正規表現で解こうとする</h3>
<p class="wp-block-paragraph">正規表現は強力ですが、複雑になるほど<strong>誰も読めない呪文</strong>と化します。半年後の自分が解読できないコードは、それだけで技術的負債です。</p>
<pre class="wp-block-code"><code>import re

text = "Pythonは楽しい"

# 冗長：正規表現を使うまでもない
print(bool(re.search(r"Python", text)))   # True

# シンプル：こちらのほうが速いし読みやすい
print("Python" in text)                   # True
print(text.startswith("Python"))          # True</code></pre>
<p class="wp-block-paragraph"><strong>「文字列メソッドで書けるなら文字列メソッド、無理なら正規表現」</strong>。この判断ができるようになれば、正規表現とは良い付き合いができます。また、複雑なパターンを書いたときは、必ず <code># 郵便番号(3桁-4桁)にマッチ</code> のようなコメントを1行添えておきましょう。将来の自分とチームメンバーへの、何よりの贈り物になります。</p>

<h2 class="wp-block-heading" id="i-18">正規表現を「使いこなす」段階へ進みたい人へ</h2>
<p class="wp-block-paragraph">正規表現は、記事を読んで理解した気になっても、いざ実務のデータを前にすると手が止まりがちな分野です。パターンの書き方そのものより、<strong>「この処理は正規表現で書くべきか」という設計判断</strong>のほうが難しく、ここは経験者にレビューしてもらうのが一番の近道でもあります。</p>
<p class="wp-block-paragraph">独学で行き詰まりを感じているなら、マンツーマンで質問できる環境を検討してみるのも手です。Winスクールの「Python Winner」は、未経験からのPython習得を前提としたマンツーマンレッスンで、転職サポートまで用意されています。無料カウンセリングだけでも受けてみると、自分に足りないものがはっきりしますよ。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>


<h2 class="wp-block-heading" id="i-19">まとめ</h2>
<p class="wp-block-paragraph">今回は、Pythonの正規表現（<code>re</code> モジュール）の使い方を初心者向けに解説しました。要点を整理しておきます。</p>
<ul class="wp-block-list"><li>正規表現は「文字列のパターン」を記号で表現する書き方で、Pythonでは標準の <code>re</code> モジュールを <code>import</code> するだけで使える</li><li>パターンの先頭には必ず <code>r</code> を付けて<strong>raw文字列</strong>にする</li><li><code>re.search()</code> は文字列全体から探す。迷ったらこれを使う</li><li><code>re.match()</code> は<strong>先頭のみ</strong>を判定する。形式チェック向き</li><li><code>re.findall()</code> はマッチした箇所を<strong>すべてリスト</strong>で返す</li><li><code>re.sub()</code> はパターンで<strong>置換</strong>できる。マスキングや整形の定番</li><li><code>()</code> でグループ化すれば必要な部分だけ取り出せる。実務では <code>(?P&lt;名前&gt;...)</code> の<strong>名前付きグループ</strong>が読みやすくおすすめ</li><li><code>re.search()</code>・<code>re.match()</code> はマッチしないと <code>None</code> を返すので、<strong>必ずNoneチェック</strong>してから <code>.group()</code> を呼ぶ</li><li><code>+</code> や <code>*</code> は貪欲マッチ。長く取れすぎるときは <code>+?</code> で最短マッチにする</li><li>文字列メソッドで書けるなら、まずはそちらを使う</li></ul>
<p class="wp-block-paragraph">正規表現は、一度書けるようになるとログ解析・データ整形・入力チェックなど、あらゆる場面で一生使える武器になります。まずは <code>re.search()</code> と <code>re.findall()</code> の2つを、手元のコードで試すところから始めてみてください。実際に手を動かして「取れた！」という感覚をつかむのが、一番の近道です。</p>
<p class="wp-block-paragraph">最後までお読みいただき、ありがとうございました。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-regex-re-module/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】break文とcontinue文の使い方を初心者向けに徹底解説！ループ処理を自在に制御する</title>
		<link>https://nano-toy-lab.com/python/python-break-continue/</link>
					<comments>https://nano-toy-lab.com/python/python-break-continue/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 00:08:40 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-break-continue/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-7-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのbreak文とcontinue文の使い方を初心者向けに解説。ループを途中で抜けるbreak、処理をスキップするcontinueの違いを、for文・while文の具体的なコードとあわせて丁寧に紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-7-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">Pythonでfor文やwhile文を書いていると、「ある条件になったらループを止めたい」「特定のときだけ処理を飛ばしたい」と思うことはありませんか？そんなときに活躍するのが<strong>break文</strong>と<strong>continue文</strong>です。</p><p class="wp-block-paragraph">この2つを使いこなせるようになると、ループ処理を自分の思いどおりにコントロールできるようになり、コードがぐっと読みやすく効率的になります。この記事では、break文とcontinue文の違いから実践的な使い方まで、初心者の方にも分かるように具体的なコードとあわせて丁寧に解説していきます。</p><h2 class="wp-block-heading" id="i-0">break文とcontinue文とは？</h2><p class="wp-block-paragraph">break文とcontinue文は、どちらもfor文やwhile文などの<strong>ループ処理の流れを制御する</strong>ための命令です。名前は似ていますが、動きはまったく異なります。まずはそれぞれの役割をざっくりイメージでつかんでおきましょう。</p><ul class="wp-block-list"><li><strong>break文</strong>：ループそのものを途中で完全に抜ける（それ以降は繰り返さない）</li><li><strong>continue文</strong>：その回の処理だけをスキップして、次の繰り返しに進む</li></ul><p class="wp-block-paragraph">「break＝ループを終わらせる」「continue＝今回だけ飛ばす」と覚えておくと混乱しにくいです。ループの基本であるfor文やwhile文がまだあいまいな方は、先に<a href="https://nano-toy-lab.com/python/while/">while文の基礎を解説した記事</a>や<a href="https://nano-toy-lab.com/python/python_for_range/">for文・range関数の使い方をまとめた記事</a>に目を通しておくと、この記事の内容がよりスムーズに理解できます。</p><h2 class="wp-block-heading" id="i-1">break文の使い方：ループを途中で抜ける</h2><p class="wp-block-paragraph">break文は、条件を満たしたときにループを終了させたい場面で使います。たとえば1から順番に数えていって、5になったらそこでやめる、という処理は次のように書けます。</p><pre class="wp-block-code"><code>for i in range(1, 11):
    if i == 5:
        break
    print(i)

# 実行結果
# 1
# 2
# 3
# 4</code></pre><p class="wp-block-paragraph">iが5になった瞬間にbreakが実行され、print(i)にたどり着く前にループ全体が終了します。そのため画面には1から4までしか表示されません。「目的のものが見つかったら、それ以上探す必要はない」といったケースでとても便利です。</p><h2 class="wp-block-heading" id="i-2">continue文の使い方：処理をスキップして次へ</h2><p class="wp-block-paragraph">continue文は、条件を満たしたときにその回の処理だけを飛ばして、ループ自体は続けたい場面で使います。次のコードは、1から10までのうち偶数を飛ばして奇数だけを表示する例です。</p><pre class="wp-block-code"><code>for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)

# 実行結果
# 1
# 3
# 5
# 7
# 9</code></pre><p class="wp-block-paragraph">iが偶数（2で割った余りが0）のときはcontinueが実行され、print(i)を飛ばして次のループに進みます。breakと違ってループは最後まで続く点が大きな違いです。「特定のデータだけ除外して処理したい」ときの定番テクニックです。</p><h2 class="wp-block-heading" id="i-3">実践例：リストの中から目的のデータを探す</h2><p class="wp-block-paragraph">break文がよく使われるのが、リストの中から特定の要素を探すケースです。見つかった時点でループを抜ければ、無駄な繰り返しを省けます。ここではfor文とセットで使える<strong>for-else構文</strong>もあわせて紹介します。</p><pre class="wp-block-code"><code>fruits = ["りんご", "ばなな", "みかん", "ぶどう"]
target = "みかん"

for fruit in fruits:
    if fruit == target:
        print(target + "が見つかりました！")
        break
else:
    print(target + "は見つかりませんでした")

# 実行結果
# みかんが見つかりました！</code></pre><p class="wp-block-paragraph">for文のelseは、<strong>ループがbreakされずに最後まで回りきったときだけ</strong>実行される少し特殊な仕組みです。今回は「みかん」が見つかってbreakされたので、elseのメッセージは表示されません。リストを扱う処理に慣れてきたら、<a href="https://nano-toy-lab.com/python/how-to-find-the-total-with-a-for-statement/">for文で合計を求める方法の記事</a>もあわせて読むと、ループの応用力がさらに高まります。</p><h2 class="wp-block-heading" id="i-4">while文でのbreak：無限ループを安全に止める</h2><p class="wp-block-paragraph">break文はwhile文と組み合わせるとさらに真価を発揮します。「while True」と書くと本来は永遠に終わらない無限ループになりますが、breakを使えば好きなタイミングで抜け出せます。</p><pre class="wp-block-code"><code>count = 0
while True:
    count += 1
    if count &gt; 3:
        break
    print("処理" + str(count) + "回目")

# 実行結果
# 処理1回目
# 処理2回目
# 処理3回目</code></pre><p class="wp-block-paragraph">countが3を超えた時点でbreakが実行され、ループが終了します。ユーザーの入力を受け付け続けて「終了」と入力されたら止める、といった処理でよく使われるパターンです。</p><h2 class="wp-block-heading" id="i-5">breakとcontinueを組み合わせる</h2><p class="wp-block-paragraph">2つを同時に使うこともできます。次のコードは「偶数はスキップし（continue）、15を超えたら終了する（break）」という条件で奇数を表示する例です。</p><pre class="wp-block-code"><code>for num in range(1, 21):
    if num % 2 == 0:
        continue
    if num &gt; 15:
        break
    print(num)

# 実行結果
# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15</code></pre><p class="wp-block-paragraph">偶数のときはcontinueで飛ばし、奇数でも15を超えたらbreakで終了しています。このように条件を組み合わせることで、複雑なループ制御もシンプルに書けるようになります。</p><h2 class="wp-block-heading" id="i-6">よくある間違いと注意点</h2><ul class="wp-block-list"><li><strong>break・continueはループの中でしか使えない</strong>：for文やwhile文の外で使うとエラーになります。</li><li><strong>ネストしたループでは内側のループにだけ効く</strong>：二重ループの内側でbreakしても、外側のループは止まりません。</li><li><strong>continueの多用は読みにくさにつながることも</strong>：条件が複雑になりすぎたら、if文で書き換えられないか検討してみましょう。</li></ul><p class="wp-block-paragraph">とくにネスト（入れ子）したループでの挙動は初心者がつまずきやすいポイントです。「どのループを抜けているのか」を常に意識すると、バグを防ぎやすくなります。</p><h2 class="wp-block-heading" id="i-7">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">break文やcontinue文のようなループ制御は、独学でも理解できますが、「実際のプログラムでどう組み合わせるのか」までを身につけようとすると、独学ではなかなか手応えをつかみにくいものです。分からないところをその場で質問できる環境があると、学習スピードは大きく変わります。</p><p class="wp-block-paragraph">もし本気でPythonを習得して仕事につなげたいなら、<strong>マンツーマン指導で未経験からPythonを学べるプログラミングスクール</strong>を検討してみるのもおすすめです。プロの講師に質問しながら進められるうえ、転職サポートが用意されているスクールも多く、まずは無料カウンセリングで学習プランを相談してみると自分に合うかどうかが見えてきます。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-8">まとめ</h2><p class="wp-block-paragraph">今回はPythonのbreak文とcontinue文について解説しました。最後に要点を振り返っておきましょう。</p><ul class="wp-block-list"><li><strong>break文</strong>はループを途中で完全に抜けるための命令</li><li><strong>continue文</strong>はその回の処理だけを飛ばして次の繰り返しに進む命令</li><li>リストからの検索や「while True」の無限ループ制御でbreakが活躍する</li><li>特定のデータを除外したいときはcontinueが便利</li><li>break・continueはループの中でのみ使え、ネストでは内側のループにだけ効く</li></ul><p class="wp-block-paragraph">break文とcontinue文を使いこなせるようになると、ループ処理の表現力が一気に広がります。まずは今回のコードを実際に書き換えて動かしてみて、それぞれの動きの違いを体で覚えていきましょう。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-break-continue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】スライスの使い方を初心者向けに徹底解説！リスト・文字列の一部を自在に取り出す</title>
		<link>https://nano-toy-lab.com/python/python-slice/</link>
					<comments>https://nano-toy-lab.com/python/python-slice/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Fri, 10 Jul 2026 00:09:12 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-slice/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-6-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのスライス（slice）の使い方を初心者向けに徹底解説。[start:stop:step]の基本ルールから、省略・ステップ・マイナス指定・逆順・文字列やタプルでの使い方、リストの書き換えまで例文つきで紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-6-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「リストの最初の3つだけ取り出したい」「文字列の後ろ2文字だけ欲しい」——Pythonを勉強していると、こんな場面によく出会いますよね。そんなときに大活躍するのが<strong>スライス（slice）</strong>です。</p><p class="wp-block-paragraph">スライスを覚えると、for文でわざわざ数えながら取り出さなくても、たった1行でリストや文字列の一部をスッと取り出せるようになります。最初は「コロンの数字の意味がよく分からない…」とつまずきやすいところですが、ルールはとてもシンプルです。</p><p class="wp-block-paragraph">この記事では、Pythonのスライスの基本の書き方から、ステップ指定・マイナス指定・逆順といった応用テクニックまで、初心者の方にも分かりやすく徹底解説します。この記事を読み終わるころには、スライスを自在に使いこなせるようになっているはずです。</p><h2 class="wp-block-heading" id="i-0">スライスとは？基本の書き方</h2><p class="wp-block-paragraph">スライスとは、リストや文字列などの<strong>連続したデータの一部を切り出す</strong>ための機能です。基本の書き方は次のとおりで、角括弧の中にコロン（:）で区切った数字を書きます。</p><pre class="wp-block-code"><code>シーケンス[start:stop]</code></pre><p class="wp-block-paragraph"><code>start</code>が取り出しを開始する位置、<code>stop</code>が終了する位置です。ここで大切なルールは、<strong>startは含み、stopは含まない</strong>という点です。実際にリストで試してみましょう。</p><pre class="wp-block-code"><code>numbers = [10, 20, 30, 40, 50]

print(numbers[1:4])
# 結果: [20, 30, 40]</code></pre><p class="wp-block-paragraph">インデックス（番号）は0から始まることを思い出してください。<code>numbers[1:4]</code>は「インデックス1から、インデックス4の手前まで」という意味なので、20・30・40の3つが取り出されます。インデックス4の50は含まれない点に注意しましょう。</p><p class="wp-block-paragraph">なお、スライスで取り出したデータは<strong>元のリストとは別の新しいリスト</strong>になります。リスト操作の基本については<a href="https://nano-toy-lab.com/python/how-to-add-an-element-to-a-list-in-python-append-extend-insert-slice/">Pythonでリストに要素を追加する方法</a>の記事もあわせて読むと理解が深まります。</p><h2 class="wp-block-heading" id="i-1">startとstopは省略できる</h2><p class="wp-block-paragraph">スライスでは、startやstopを省略することができます。省略した場合は「先頭から」「末尾まで」という意味になります。</p><pre class="wp-block-code"><code>numbers = [10, 20, 30, 40, 50]

print(numbers[:3])   # 先頭から3つ -&gt; [10, 20, 30]
print(numbers[2:])   # インデックス2から末尾まで -&gt; [30, 40, 50]
print(numbers[:])    # 全部（コピー） -&gt; [10, 20, 30, 40, 50]</code></pre><p class="wp-block-paragraph"><code>numbers[:]</code>のように両方省略すると、リスト全体をコピーできます。これは元のリストを壊さずに扱いたいときに便利なテクニックです。</p><h2 class="wp-block-heading" id="i-2">ステップ（step）で飛ばしながら取り出す</h2><p class="wp-block-paragraph">スライスには3つ目の数字として<strong>ステップ（step）</strong>を指定できます。書き方は次のとおりです。</p><pre class="wp-block-code"><code>シーケンス[start:stop:step]</code></pre><p class="wp-block-paragraph">stepは「何個おきに取り出すか」を表します。たとえば2を指定すると、1つ飛ばしで取り出せます。</p><pre class="wp-block-code"><code>numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[::2])    # 偶数番目 -&gt; [0, 2, 4, 6, 8]
print(numbers[1::2])   # 奇数番目 -&gt; [1, 3, 5, 7, 9]</code></pre><p class="wp-block-paragraph"><code>numbers[::2]</code>は「先頭から末尾まで2個おき」という意味になり、偶数番目の要素だけを取り出せます。</p><h2 class="wp-block-heading" id="i-3">マイナスのインデックスで後ろから取り出す</h2><p class="wp-block-paragraph">Pythonでは、インデックスにマイナスの数字を使うと<strong>後ろから数えた位置</strong>を指定できます。一番後ろが-1、その手前が-2です。スライスでもこのマイナス指定が使えます。</p><pre class="wp-block-code"><code>word = ['P', 'y', 't', 'h', 'o', 'n']

print(word[-2:])    # 後ろ2つ -&gt; ['o', 'n']
print(word[:-2])    # 後ろ2つを除く -&gt; ['P', 'y', 't', 'h']</code></pre><p class="wp-block-paragraph">「末尾のいくつかだけ欲しい」「末尾のいくつかを取り除きたい」といった処理が、マイナス指定を使うととてもスッキリ書けます。</p><h3 class="wp-block-heading" id="i-4">stepにマイナスを指定すると逆順になる</h3><p class="wp-block-paragraph">stepにマイナスの値を指定すると、<strong>後ろから前に向かって</strong>取り出すことになり、結果として並びが逆順になります。<code>[::-1]</code>はリストや文字列を反転させる定番のテクニックです。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]

print(numbers[::-1])
# 結果: [5, 4, 3, 2, 1]</code></pre><h2 class="wp-block-heading" id="i-5">文字列でもスライスは使える</h2><p class="wp-block-paragraph">スライスはリストだけでなく<strong>文字列</strong>でも同じように使えます。文字列を1文字ずつのシーケンスとして扱えるので、一部分を取り出すのが簡単です。</p><pre class="wp-block-code"><code>text = 'Python'

print(text[0:3])   # 先頭3文字 -&gt; Pyt
print(text[-2:])   # 後ろ2文字 -&gt; on
print(text[::-1])  # 逆順 -&gt; nohtyP</code></pre><p class="wp-block-paragraph">文字列の切り出しや加工では、スライスと<a href="https://nano-toy-lab.com/python/python-string-methods/">文字列メソッド</a>を組み合わせると、より柔軟な処理ができるようになります。あわせて覚えておくと便利です。</p><h2 class="wp-block-heading" id="i-6">タプルでもスライスは使える</h2><p class="wp-block-paragraph">スライスは、リストや文字列と同じ「シーケンス型」である<a href="https://nano-toy-lab.com/python/python-tuple/">タプル(tuple)</a>でも利用できます。ただしタプルは変更できない（イミュータブル）ため、スライスで取り出した結果も新しいタプルになります。</p><pre class="wp-block-code"><code>colors = ('赤', '青', '緑', '黄')

print(colors[1:3])
# 結果: ('青', '緑')</code></pre><h2 class="wp-block-heading" id="i-7">スライスでリストの一部を書き換える</h2><p class="wp-block-paragraph">リストの場合は、スライスで指定した範囲に<strong>まとめて代入</strong>することもできます。複数の要素を一気に置き換えられるので便利です。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]
numbers[1:3] = [20, 30]
print(numbers)
# 結果: [1, 20, 30, 4, 5]</code></pre><p class="wp-block-paragraph">この書き換えは、要素の数が違っても動作します。たとえば2つの範囲に3つの要素を代入すれば、リスト全体の長さも変わります。なお、取り出した要素をまとめて加工したいときは<a href="https://nano-toy-lab.com/python/list-comprehension/">リスト内包表記</a>と組み合わせると、さらに短く書けます。</p><h2 class="wp-block-heading" id="i-8">スライスでよくある間違いと注意点</h2><p class="wp-block-paragraph">最後に、初心者の方がつまずきやすいポイントを確認しておきましょう。</p><ul class="wp-block-list"><li><strong>stopの位置は含まれない</strong>：<code>[1:4]</code>はインデックス4を含みません。「終わりの手前まで」と覚えましょう。</li><li><strong>範囲外を指定してもエラーにならない</strong>：<code>numbers[1:100]</code>のように大きすぎる数字を書いても、エラーではなく「あるところまで」を返してくれます。</li><li><strong>スライスは新しいオブジェクトを作る</strong>：元のデータは書き換わりません（代入する場合を除く）。</li></ul><pre class="wp-block-code"><code>numbers = [10, 20, 30]
print(numbers[1:100])   # エラーにならない -&gt; [20, 30]
print(numbers[5:10])    # 範囲外 -&gt; [] （空のリスト）</code></pre><h2 class="wp-block-heading" id="i-9">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">スライスのように「知っていると一気にコードが短くなる」テクニックは、Pythonにはまだまだたくさんあります。独学でも学べますが、「つまずいたときにすぐ質問できる環境が欲しい」「未経験から効率よくPythonを身につけたい」という方には、プログラミングスクールという選択肢もおすすめです。</p><p class="wp-block-paragraph">マンツーマン指導で自分のペースに合わせて学べるスクールなら、エラーで長時間悩む時間を減らし、転職サポートまで受けられます。多くのスクールが無料カウンセリングを用意しているので、まずは気軽に相談してみるとよいでしょう。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-10">まとめ</h2><p class="wp-block-paragraph">今回は、Pythonのスライスの使い方について解説しました。最後に要点を整理しておきましょう。</p><ul class="wp-block-list"><li>スライスは<code>[start:stop]</code>で、リストや文字列の一部を切り出せる</li><li><strong>startは含み、stopは含まない</strong>のが基本ルール</li><li>startやstopは省略でき、<code>[:]</code>で全体のコピーができる</li><li><code>[start:stop:step]</code>のstepで飛ばし読みができ、<code>[::-1]</code>で逆順になる</li><li>マイナスのインデックスで後ろから取り出せる</li><li>リストならスライスへの代入で一部をまとめて書き換えられる</li></ul><p class="wp-block-paragraph">スライスは、Pythonを書くうえで毎日のように使う超基本テクニックです。ぜひ実際に手を動かして、いろいろな数字を試しながら感覚をつかんでみてくださいね。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-slice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】可変長引数（*args・**kwargs）の使い方を初心者向けに徹底解説！</title>
		<link>https://nano-toy-lab.com/python/python-args-kwargs/</link>
					<comments>https://nano-toy-lab.com/python/python-args-kwargs/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 08 Jul 2026 00:08:55 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-args-kwargs/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-4-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの可変長引数*argsと**kwargsの使い方を初心者向けに解説。任意の数の引数を受け取る関数の作り方、タプルと辞書としての受け取り、呼び出し側でのアンパック、引数の順番までコード付きで丁寧に紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-4-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">関数を作っていると、「引数の数を決めうちにしたくない」「あとから引数を増やしたい」と感じる場面がありますよね。たとえば「渡された数値をぜんぶ合計する関数」を作りたいとき、引数を固定してしまうと不便です。そんなときに活躍するのが、Pythonの<strong>可変長引数</strong>である <code>*args</code> と <code>**kwargs</code> です。</p><p class="wp-block-paragraph">この記事では、可変長引数の基本から、<code>*args</code>（位置引数をまとめて受け取る）と <code>**kwargs</code>（キーワード引数をまとめて受け取る）の違い、引数を書く順番、呼び出し側でのアンパックまで、実際に動くコードを交えながら初心者向けに丁寧に解説します。読み終えるころには、柔軟で再利用しやすい関数が書けるようになりますよ。</p><h2 class="wp-block-heading" id="i-0">可変長引数とは？</h2><p class="wp-block-paragraph">可変長引数とは、その名のとおり「個数が決まっていない引数」を受け取るしくみのことです。通常の関数は <code>def add(a, b):</code> のように引数の数が固定ですが、可変長引数を使うと、0個でも100個でも同じ関数で受け取れるようになります。</p><p class="wp-block-paragraph">可変長引数には2種類あります。位置引数（順番で渡す引数）をまとめて受け取る <code>*args</code> と、キーワード引数（名前付きで渡す引数）をまとめて受け取る <code>**kwargs</code> です。それぞれ順番に見ていきましょう。なお、関数の基本的な書き方があいまいな方は、先に<a href="https://nano-toy-lab.com/python/function/">関数の基礎を解説した記事</a>を読んでおくと理解がスムーズです。</p><h2 class="wp-block-heading" id="i-1">*args の使い方（位置引数をまとめて受け取る）</h2><p class="wp-block-paragraph">仮引数の前にアスタリスク（<code>*</code>）を1つ付けると、渡された位置引数をすべてまとめて受け取れます。慣例として名前は <code>args</code> がよく使われますが、名前自体は自由です（大切なのは先頭の <code>*</code> です）。まずは「渡された数値を合計する関数」を作ってみましょう。</p><pre class="wp-block-code"><code>def add(*args):
    total = 0
    for n in args:
        total += n
    return total

print(add(1, 2, 3))        # 6
print(add(10, 20, 30, 40)) # 100
print(add())               # 0</code></pre><p class="wp-block-paragraph">引数を3個渡しても4個渡しても、さらには1個も渡さなくても、同じ関数で処理できています。これが可変長引数の便利なところです。</p><h3 class="wp-block-heading" id="i-2">args の正体はタプル</h3><p class="wp-block-paragraph"><code>*args</code> で受け取った値は、<strong>タプル</strong>としてまとめられます。実際に型を確認してみましょう。</p><pre class="wp-block-code"><code>def show(*args):
    print(type(args))
    print(args)

show(1, 2, 3)
# &lt;class 'tuple'&gt;
# (1, 2, 3)</code></pre><p class="wp-block-paragraph">このように <code>args</code> はタプルなので、<code>for</code> でループしたり、<code>args[0]</code> のようにインデックスでアクセスしたりできます。タプルそのものの性質については<a href="https://nano-toy-lab.com/python/python-tuple/">タプル(tuple)の使い方を解説した記事</a>もあわせて読むと理解が深まります。</p><h2 class="wp-block-heading" id="i-3">**kwargs の使い方（キーワード引数をまとめて受け取る）</h2><p class="wp-block-paragraph">仮引数の前にアスタリスクを2つ（<code>**</code>）付けると、<code>name="佐藤"</code> のような「名前付きの引数（キーワード引数）」をまとめて受け取れます。こちらも慣例で <code>kwargs</code>（keyword arguments の略）という名前がよく使われます。</p><pre class="wp-block-code"><code>def profile(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

profile(name="佐藤", age=25, job="SE")
# name: 佐藤
# age: 25
# job: SE</code></pre><p class="wp-block-paragraph">渡したキーワード引数が、そのままキーと値のペアとして扱われているのが分かりますね。</p><h3 class="wp-block-heading" id="i-4">kwargs の正体は辞書</h3><p class="wp-block-paragraph"><code>**kwargs</code> で受け取った値は、<strong>辞書（dict）</strong>としてまとめられます。</p><pre class="wp-block-code"><code>def show(**kwargs):
    print(type(kwargs))
    print(kwargs)

show(a=1, b=2)
# &lt;class 'dict'&gt;
# {'a': 1, 'b': 2}</code></pre><p class="wp-block-paragraph">辞書なので、<code>kwargs.items()</code> でループしたり、<code>kwargs.get("age")</code> で値を取り出したりできます。辞書の操作に不安がある方は<a href="https://nano-toy-lab.com/python/python-dict/">辞書(dict)の使い方を解説した記事</a>も参考にしてみてください。</p><h2 class="wp-block-heading" id="i-5">通常の引数と組み合わせる（引数を書く順番）</h2><p class="wp-block-paragraph">可変長引数は、通常の引数といっしょに使うこともできます。ただし、書く順番には決まりがあります。<strong>「通常の引数 → *args → **kwargs」</strong>の順に並べる必要があり、これを守らないとエラーになります。</p><pre class="wp-block-code"><code>def func(a, b, *args, **kwargs):
    print("a =", a)
    print("b =", b)
    print("args =", args)
    print("kwargs =", kwargs)

func(1, 2, 3, 4, x=10, y=20)
# a = 1
# b = 2
# args = (3, 4)
# kwargs = {'x': 10, 'y': 20}</code></pre><p class="wp-block-paragraph">最初の2つ（1, 2）が <code>a</code>・<code>b</code> に入り、残りの位置引数（3, 4）が <code>args</code> に、名前付きの引数（x, y）が <code>kwargs</code> に振り分けられました。役割ごとにきれいに分かれるのがポイントです。</p><h2 class="wp-block-heading" id="i-6">呼び出し側の * と **（アンパック）</h2><p class="wp-block-paragraph">ここまでは関数を「定義する側」の話でしたが、<code>*</code> と <code>**</code> は関数を「呼び出す側」でも使えます。リストやタプルの前に <code>*</code> を付けると、要素がバラバラの位置引数として展開（アンパック）され、辞書の前に <code>**</code> を付けると、キーワード引数として展開されます。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3]
print(add(*numbers))   # 6

user = {"name": "田中", "age": 30, "job": "SE"}
profile(**user)
# name: 田中
# age: 30
# job: SE</code></pre><p class="wp-block-paragraph">リストや辞書に入っているデータを、そのまま関数の引数として渡せるのでとても便利です。この「アンパック」という考え方については<a href="https://nano-toy-lab.com/python/list-unpacking/">リストのアンパックを解説した記事</a>でも詳しく紹介しています。</p><h2 class="wp-block-heading" id="i-7">実用例：柔軟な関数を作る</h2><p class="wp-block-paragraph"><code>*args</code> と <code>**kwargs</code> を組み合わせると、状況に応じて引数の数が変わるような、柔軟な関数を作れます。たとえば、メイン料理・サイド料理（複数）・オプション（名前付き）を受け取る注文関数はこう書けます。</p><pre class="wp-block-code"><code>def order(main, *sides, **options):
    print(f"メイン: {main}")
    if sides:
        print("サイド:", ", ".join(sides))
    for key, value in options.items():
        print(f"{key} → {value}")

order("ハンバーグ", "サラダ", "スープ", drink="コーヒー", size="大盛り")
# メイン: ハンバーグ
# サイド: サラダ, スープ
# drink → コーヒー
# size → 大盛り</code></pre><p class="wp-block-paragraph">サイドが何品でも、オプションが何個でも、1つの関数で受け止められます。ライブラリの関数がさまざまなオプションを受け取れるのは、まさにこのしくみが使われているからです。</p><h2 class="wp-block-heading" id="i-8">よくあるエラーと注意点</h2><p class="wp-block-paragraph">可変長引数でつまずきやすいポイントをまとめておきます。まず、引数の順番を間違えて <code>def func(**kwargs, a):</code> のように書くと <code>SyntaxError</code> になります。必ず「通常の引数 → *args → **kwargs」の順を守りましょう。</p><p class="wp-block-paragraph">また、<code>*args</code> はタプル、<code>**kwargs</code> は辞書である点を忘れると、存在しないメソッドを呼んでエラーになりがちです。<code>args</code> に対して <code>.items()</code> を呼んだり、<code>kwargs</code> に対して <code>append()</code> を呼んだりしないよう注意してください。名前は <code>args</code>・<code>kwargs</code> でなくても動きますが、他の人が読んだときに分かりやすいので、特別な理由がなければ慣例に従うのがおすすめです。</p><h2 class="wp-block-heading" id="i-9">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">可変長引数のように、Pythonには「知っていると一気に便利になる」文法がたくさんあります。独学でも学べますが、つまずいたときにすぐ質問できる環境があると、挫折せずに一気に上達できます。</p><p class="wp-block-paragraph">未経験からPythonを本格的に習得して、エンジニア転職まで目指したい方には、マンツーマン指導が受けられるプログラミングスクールという選択肢もあります。プロ講師にコードを直接見てもらえるので、独学では気づきにくい「書き方のクセ」も早い段階で直せます。まずは無料カウンセリングで、自分に合う学び方を相談してみるのも良いですよ。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-10">まとめ</h2><p class="wp-block-paragraph">今回は、Pythonの可変長引数 <code>*args</code> と <code>**kwargs</code> について解説しました。最後に要点を振り返っておきましょう。</p><ul class="wp-block-list"><li><code>*args</code>：任意の個数の<strong>位置引数</strong>をまとめて受け取り、<strong>タプル</strong>になる</li><li><code>**kwargs</code>：任意の個数の<strong>キーワード引数</strong>をまとめて受け取り、<strong>辞書</strong>になる</li><li>引数を書く順番は「通常の引数 → *args → **kwargs」を守る</li><li>呼び出し側でも <code>*リスト</code>・<code>**辞書</code> でアンパックして渡せる</li><li>名前は自由だが、慣例の <code>args</code>・<code>kwargs</code> を使うと読みやすい</li></ul><p class="wp-block-paragraph">可変長引数を使いこなせると、柔軟で再利用しやすい関数が書けるようになります。ぜひ実際に手を動かして、いろいろな引数を渡して試してみてくださいね。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-args-kwargs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】文字列メソッドの使い方を初心者向けに徹底解説！replace・strip・upper・findなど頻出メソッドを完全マスター</title>
		<link>https://nano-toy-lab.com/python/python-string-methods/</link>
					<comments>https://nano-toy-lab.com/python/python-string-methods/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 06 Jul 2026 00:12:47 +0000</pubDate>
				<category><![CDATA[徹底解説]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/?p=7386</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-3-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの文字列メソッドを初心者向けに解説。upper/lowerでの大文字小文字変換、stripでの空白除去、replaceでの置換、find・inでの検索、startswith等の判定まで、頻出メソッドをサンプルコード付きで完全マスターできます。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-3-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">Pythonで文字列を扱っていると、「余分な空白を消したい」「一部の文字を別の文字に置き換えたい」「特定の文字が含まれているか調べたい」といった場面によく出会います。こうした処理は、実はPythonが最初から用意している<strong>文字列メソッド</strong>を使えば、たった1行で書けてしまいます。</p><p class="wp-block-paragraph">この記事では、初心者の方がまず覚えておきたい文字列メソッドを、大文字・小文字の変換、空白の除去、置換、検索、判定という目的別に整理して解説します。どれも実務でも頻繁に使う基本ばかりなので、サンプルコードを手元で動かしながら読み進めてみてください。</p><h2 class="wp-block-heading" id="i-0">文字列メソッドとは？</h2><p class="wp-block-paragraph">メソッドとは、ある値に対して「.（ドット）」をつけて呼び出せる、その値専用の関数のことです。文字列（str型）に対して使えるメソッドが文字列メソッドで、<code>文字列.メソッド名()</code>という形で書きます。</p><p class="wp-block-paragraph">たとえば <code>"hello".upper()</code> と書くと、「hello という文字列を大文字にする」という意味になり、結果として <code>"HELLO"</code> が返ってきます。とてもシンプルですね。まずは代表的なものから見ていきましょう。</p><h2 class="wp-block-heading" id="i-1">大文字・小文字を変換する（upper / lower / capitalize / title）</h2><p class="wp-block-paragraph">英字の大文字・小文字をそろえたいときに使うメソッドです。ユーザーが入力した文字列を比較する前に、小文字にそろえておく、といった用途でよく使います。</p><pre class="wp-block-code"><code>text = "Hello, Python"

print(text.upper())        # HELLO, PYTHON
print(text.lower())        # hello, python
print(text.capitalize())   # Hello, python（先頭だけ大文字）
print("python is fun".title())  # Python Is Fun（単語ごとに先頭大文字）</code></pre><p class="wp-block-paragraph"><code>upper()</code>はすべて大文字に、<code>lower()</code>はすべて小文字に変換します。<code>capitalize()</code>は文の先頭だけを大文字に、<code>title()</code>は単語ごとの先頭を大文字にします。目的に合わせて使い分けましょう。</p><h2 class="wp-block-heading" id="i-2">余分な空白を取り除く（strip / lstrip / rstrip）</h2><p class="wp-block-paragraph">フォームから受け取った文字列などには、前後に余分な空白が含まれていることがあります。そのまま比較すると意図せず不一致になってしまうため、<code>strip()</code>で除去しておくのが定番です。</p><pre class="wp-block-code"><code>s = "   こんにちは   "

print(s.strip())    # こんにちは（前後の空白を除去）
print(s.lstrip())   # 左側の空白だけ除去
print(s.rstrip())   # 右側の空白だけ除去

# 引数を渡すと、指定した文字を端から取り除ける
url = "https://example.com/"
print(url.rstrip("/"))   # https://example.com</code></pre><p class="wp-block-paragraph">引数を渡さなければ空白や改行が対象になりますが、<code>rstrip("/")</code>のように文字を指定すると、その文字を端から取り除けます。URLの末尾スラッシュを消したいときなどに便利です。</p><h2 class="wp-block-heading" id="i-3">文字列を置換する（replace）</h2><p class="wp-block-paragraph">文字列の一部を別の文字に置き換えるには<code>replace()</code>を使います。第1引数に「置き換え前」、第2引数に「置き換え後」を渡すだけです。カンマや単位を取り除いて数値に変換したいときにも活躍します。</p><pre class="wp-block-code"><code>text = "Python は たのしい"
print(text.replace("たのしい", "おもしろい"))
# Python は おもしろい

# カンマや単位を消して数値に変換する
price = "1,000,000円"
num = price.replace(",", "").replace("円", "")
print(int(num) + 500)   # 1000500</code></pre><p class="wp-block-paragraph"><code>replace()</code>は該当する箇所を<strong>すべて</strong>置き換えます。上の例のように<code>.replace(...).replace(...)</code>とつなげて書くこともできます。文字列を区切り文字で分割・結合したい場合は、<a href="https://nano-toy-lab.com/python/split-join/">splitとjoinを使う方法</a>もあわせて覚えておくと便利です。</p><h2 class="wp-block-heading" id="i-4">文字列を検索する（find / count / in）</h2><p class="wp-block-paragraph">特定の文字が「どこにあるか」「いくつあるか」「含まれているか」を調べるメソッドです。</p><pre class="wp-block-code"><code>text = "banana"

print(text.find("a"))    # 1（最初に見つかった位置＝インデックス）
print(text.find("z"))    # -1（見つからないと -1 を返す）
print(text.count("a"))   # 3（出現回数）
print("ana" in text)     # True（含まれているかは in が手軽）</code></pre><p class="wp-block-paragraph"><code>find()</code>は最初に見つかった位置を返し、見つからなければ<code>-1</code>を返します。単に「含まれているかどうか」を知りたいだけなら、<code>in</code>演算子を使うほうが直感的で読みやすいです。</p><h2 class="wp-block-heading" id="i-5">文字列を判定する（startswith / endswith / isdigit）</h2><p class="wp-block-paragraph">文字列が特定の条件を満たすかどうかを、True／Falseで返してくれるメソッドです。ファイルの拡張子チェックや、入力が数字だけかどうかの確認などに使えます。</p><pre class="wp-block-code"><code>print("image.png".endswith(".png"))     # True
print("https://example.com".startswith("https"))  # True
print("12345".isdigit())     # True（数字だけかどうか）
print("Hello".isalpha())     # True（英字だけかどうか）</code></pre><p class="wp-block-paragraph">入力された文字列が数字だけかどうかを<code>isdigit()</code>で確認し、そのうえで整数に変換する、といった使い方が定番です。文字列を数値に変える方法は<a href="https://nano-toy-lab.com/python/python-type-conversion/">型変換（キャスト）の記事</a>で詳しく解説しています。</p><h2 class="wp-block-heading" id="i-6">実践：文字列メソッドを組み合わせてみよう</h2><p class="wp-block-paragraph">ここまでのメソッドは、組み合わせることで一気に実用的になります。前後の空白を消し、カンマで分割し、必要な部分を大文字にする、という一連の処理を書いてみましょう。</p><pre class="wp-block-code"><code>raw = "  Taro,Yamada,Tokyo  "

parts = raw.strip().split(",")   # 空白を消してから分割
print(parts)                     # ['Taro', 'Yamada', 'Tokyo']

name = parts[0].upper()
print(f"氏名: {name}")           # 氏名: TARO</code></pre><p class="wp-block-paragraph">このように、メソッドは「.」でつないで次々と処理を重ねられます。結果を表示するときに使った<code>f"氏名: {name}"</code>のような書き方については、<a href="https://nano-toy-lab.com/python/python-f-string/">f文字列（f-string）の使い方</a>で詳しくまとめていますので、あわせてご覧ください。</p><h2 class="wp-block-heading" id="i-7">文字列メソッドを使うときの注意点</h2><p class="wp-block-paragraph">文字列メソッドで一番つまずきやすいのが、「メソッドを呼んでも元の文字列は変わらない」という点です。Pythonの文字列は<strong>イミュータブル（変更できない）</strong>なので、メソッドは新しい文字列を返すだけで、元の変数はそのまま残ります。</p><pre class="wp-block-code"><code>text = "python"

text.upper()
print(text)      # python（元の文字列は変わっていない！）

text = text.upper()
print(text)      # PYTHON（代入して初めて反映される）</code></pre><p class="wp-block-paragraph">「変換したはずなのに変わらない」という場合は、この代入を忘れていることがほとんどです。メソッドの戻り値をしっかり変数に受け取るクセをつけておきましょう。</p><h2 class="wp-block-heading" id="i-8">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">文字列メソッドのように、Pythonには覚えると便利な機能がたくさんあります。独学でも十分に学べますが、「エラーの原因が分からず先に進めない」「体系立てて最短で身につけたい」と感じたら、プロに教わるのも有力な選択肢です。</p><p class="wp-block-paragraph">マンツーマン指導のスクールなら、未経験からのPython習得はもちろん、つまずいたその場で質問して解決できるのが強みです。転職サポートが用意されているところも多く、まずは無料カウンセリングで学習プランや費用感を相談してみるとよいでしょう。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-9">まとめ</h2><p class="wp-block-paragraph">今回は、Pythonの基本となる文字列メソッドを目的別に解説しました。最後に要点を振り返っておきましょう。</p><ul class="wp-block-list"><li><code>upper() / lower()</code>で大文字・小文字を変換できる</li><li><code>strip()</code>で前後の余分な空白を取り除ける</li><li><code>replace()</code>で該当箇所をすべて置換できる</li><li><code>find()</code>や<code>in</code>で文字列を検索・判定できる</li><li><code>startswith() / endswith() / isdigit()</code>で条件をTrue/Falseで判定できる</li><li>文字列はイミュータブルなので、メソッドの戻り値は代入して受け取る</li></ul><p class="wp-block-paragraph">文字列メソッドは、データの整形やチェックであらゆる場面に登場する必須スキルです。まずはこの記事のサンプルを実際に動かして、少しずつ手になじませていきましょう。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-string-methods/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】型変換（キャスト）の使い方を初心者向けに徹底解説！int・float・str・boolを完全マスター</title>
		<link>https://nano-toy-lab.com/python/python-type-conversion/</link>
					<comments>https://nano-toy-lab.com/python/python-type-conversion/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 00:08:39 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-type-conversion/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-1-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonの型変換（キャスト）を初心者向けに徹底解説！int・float・str・boolの使い方から、input関数との組み合わせ、ValueError対策まで、実行結果つきのコードで分かりやすく紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-1-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">「input関数で受け取った数値を計算しようとしたらエラーになった…」「数値と文字列をつなげようとしたら怒られた…」Pythonを学び始めた方なら、一度はこんな経験があるのではないでしょうか。</p>
<p class="wp-block-paragraph">その原因の多くは「データ型の違い」にあります。そして、その解決策となるのが今回のテーマである<strong>型変換（キャスト）</strong>です。</p>
<p class="wp-block-paragraph">この記事では、Pythonの型変換の基本であるint・float・str・boolの使い方を、実際に動くコードと実行結果つきで初心者向けに徹底解説します。この記事を読めば、型に関するエラーに自信を持って対処できるようになりますよ。</p>
<h2 class="wp-block-heading" id="i-0">型変換（キャスト）とは？</h2>
<p class="wp-block-paragraph">型変換（キャスト）とは、<strong>あるデータ型の値を別のデータ型に変換すること</strong>です。たとえば、文字列の”100″を数値の100に変換したり、数値の25を文字列の”25″に変換したりする操作を指します。</p>
<p class="wp-block-paragraph">Pythonでは、変換したい型の名前をそのまま関数のように使うことで型変換ができます。主に使うのは次の4つです。</p>
<ul class="wp-block-list"><li>int()：整数に変換する</li><li>float()：小数（浮動小数点数）に変換する</li><li>str()：文字列に変換する</li><li>bool()：真偽値（True / False）に変換する</li></ul>
<p class="wp-block-paragraph">それでは、1つずつ具体的に見ていきましょう。</p>
<h2 class="wp-block-heading" id="i-1">数値への変換：int()とfloat()</h2>
<h3 class="wp-block-heading" id="i-2">int()で整数に変換する</h3>
<p class="wp-block-paragraph">int()を使うと、文字列や小数を整数に変換できます。</p>
<pre class="wp-block-code"><code>print(int("100"))   # 100（文字列 → 整数）
print(int(3.9))     # 3（小数点以下は切り捨て）
print(int(-3.9))    # -3（0に近づく方向に切り捨て）</code></pre>
<p class="wp-block-paragraph">注意したいのは、小数をint()に渡したときの挙動です。四捨五入ではなく<strong>小数点以下の切り捨て</strong>になるため、3.9は4ではなく3になります。</p>
<h3 class="wp-block-heading" id="i-3">float()で小数に変換する</h3>
<p class="wp-block-paragraph">float()を使うと、文字列や整数を小数に変換できます。</p>
<pre class="wp-block-code"><code>print(float("3.14"))  # 3.14（文字列 → 小数）
print(float(5))       # 5.0（整数 → 小数）</code></pre>
<p class="wp-block-paragraph">整数の5をfloat()に渡すと、値としては同じでも「5.0」という小数型のデータになります。</p>
<h3 class="wp-block-heading" id="i-4">数値に変換できない文字列はエラーになる</h3>
<p class="wp-block-paragraph">int()やfloat()に数値として解釈できない文字列を渡すと、ValueErrorという例外が発生します。</p>
<pre class="wp-block-code"><code>print(int("abc"))
# ValueError: invalid literal for int() with base 10: 'abc'</code></pre>
<p class="wp-block-paragraph">ユーザーの入力など「何が来るか分からない」データを変換するときは、try-exceptでエラーに備えておくと安全です。</p>
<pre class="wp-block-code"><code>text = "abc"
try:
    num = int(text)
    print(num)
except ValueError:
    print("数値に変換できません")

# 実行結果: 数値に変換できません</code></pre>
<p class="wp-block-paragraph">try-exceptの詳しい書き方については、<a href="https://nano-toy-lab.com/python/exception-handling-part1/">例外処理の基本を解説した記事</a>で紹介しているので、あわせて読んでみてください。</p>
<h2 class="wp-block-heading" id="i-5">文字列への変換：str()</h2>
<p class="wp-block-paragraph">str()を使うと、数値などを文字列に変換できます。よく使うのは、数値と文字列を連結したい場面です。まずは、型変換をしないとどうなるか見てみましょう。</p>
<pre class="wp-block-code"><code>age = 25
print("私は" + age + "歳です")
# TypeError: can only concatenate str (not "int") to str</code></pre>
<p class="wp-block-paragraph">Pythonでは文字列と数値をそのまま+で連結できないため、TypeErrorが発生します。str()で数値を文字列に変換すれば、正しく連結できます。</p>
<pre class="wp-block-code"><code>age = 25
print("私は" + str(age) + "歳です")
# 実行結果: 私は25歳です</code></pre>
<p class="wp-block-paragraph">なお、変数の埋め込みが多い場合は、str()を使うよりもf文字列を使ったほうがスッキリ書けます。<a href="https://nano-toy-lab.com/python/python-f-string/">f文字列（f-string）の使い方を解説した記事</a>も参考にしてみてください。</p>
<h2 class="wp-block-heading" id="i-6">bool()による真偽値への変換</h2>
<p class="wp-block-paragraph">bool()を使うと、さまざまな値をTrue / Falseの真偽値に変換できます。</p>
<pre class="wp-block-code"><code>print(bool(1))      # True
print(bool(0))      # False
print(bool(""))     # False（空の文字列）
print(bool("abc"))  # True
print(bool([]))     # False（空のリスト）</code></pre>
<p class="wp-block-paragraph">ポイントは、<strong>「空っぽ」や「ゼロ」を表す値はFalse、それ以外はTrue</strong>になるというルールです。このルールはif文の条件式でもそのまま使われるので、覚えておくとコードを読む力がグッと上がります。</p>
<h2 class="wp-block-heading" id="i-7">input関数と型変換の組み合わせ</h2>
<p class="wp-block-paragraph">型変換が最も活躍するのが、input関数と組み合わせる場面です。input関数の戻り値は<strong>必ず文字列（str型）</strong>になるため、数値として計算したい場合はint()やfloat()での変換が必須です。</p>
<pre class="wp-block-code"><code>num = int(input("数値を入力してください: "))
print(num * 2)

# 入力例: 10
# 実行結果: 20</code></pre>
<p class="wp-block-paragraph">もしint()を付けずにnum * 2とすると、文字列の繰り返しになってしまい「1010」と表示されてしまいます。これはPython初心者が非常によくつまずくポイントです。input関数の基本については、<a href="https://nano-toy-lab.com/python/input/">input関数でキーボード入力を取得する方法の記事</a>で詳しく解説しています。</p>
<h2 class="wp-block-heading" id="i-8">型を確認するtype関数</h2>
<p class="wp-block-paragraph">「今この変数はどの型なんだろう？」と迷ったら、type関数で確認できます。デバッグの強い味方なので、ぜひ覚えておきましょう。</p>
<pre class="wp-block-code"><code>print(type("100"))       # &lt;class 'str'&gt;
print(type(int("100")))  # &lt;class 'int'&gt;
print(type(3.14))        # &lt;class 'float'&gt;
print(type(True))        # &lt;class 'bool'&gt;</code></pre>
<p class="wp-block-paragraph">型に関するエラーが出たときは、まずtype関数で変数の型を確認するのが解決への近道です。</p>
<h2 class="wp-block-heading" id="i-9">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph">型変換のような基礎文法は独学でも学べますが、「エラーの原因が自分では分からない」「学習の順番が合っているか不安」と感じる方も多いのではないでしょうか。</p>
<p class="wp-block-paragraph">そんな方には、マンツーマンで質問しながら学べるプログラミングスクールという選択肢もあります。未経験からのPython習得カリキュラムや転職サポートが用意されており、無料カウンセリングで学習の悩みを相談するだけでも学習計画の参考になりますよ。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<h2 class="wp-block-heading" id="i-10">まとめ</h2>
<p class="wp-block-paragraph">今回は、Pythonの型変換（キャスト）について解説しました。要点をまとめます。</p>
<ul class="wp-block-list"><li>型変換（キャスト）は、int()・float()・str()・bool()で行う</li><li>int()に小数を渡すと四捨五入ではなく切り捨てになる</li><li>数値に変換できない文字列を渡すとValueErrorが発生する（try-exceptで対策）</li><li>数値と文字列を+で連結するときはstr()で文字列に変換する</li><li>input関数の戻り値は必ずstr型なので、計算にはint()やfloat()が必須</li><li>型に迷ったらtype関数で確認する</li></ul>
<p class="wp-block-paragraph">型変換はPythonのあらゆる場面で登場する基礎中の基礎です。この記事のコードを実際に手元で動かして、しっかり身につけていきましょう！</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-type-conversion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】map関数とfilter関数の使い方を初心者向けに徹底解説！</title>
		<link>https://nano-toy-lab.com/python/python-map-filter/</link>
					<comments>https://nano-toy-lab.com/python/python-map-filter/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Wed, 01 Jul 2026 00:09:20 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<category><![CDATA[徹底解説]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/python/python-map-filter/</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのmap関数とfilter関数の使い方を初心者向けに解説。各要素の一括変換や条件での絞り込みを、実際に動くコードと実行結果つきで紹介。リスト内包表記との使い分けや注意点もわかります。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/07/eyecatch-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">リストの中身をまとめて加工したり、条件に合う要素だけを取り出したりする処理は、Pythonのプログラミングで本当によく登場します。そんなとき「for文でループを回して、新しいリストに追加して…」と書くと、どうしてもコードが長くなりがちですよね。</p><p class="wp-block-paragraph">そこで役立つのが <strong>map関数</strong> と <strong>filter関数</strong> です。この2つを使いこなせると、「全要素を変換する」「条件で絞り込む」といった処理を、たった1行でスッキリ書けるようになります。</p><p class="wp-block-paragraph">この記事では、Python初心者の方に向けて、map関数とfilter関数の基本的な使い方から、2つを組み合わせるテクニック、リスト内包表記との使い分け、そしてつまずきやすい注意点までを、実際に動くコードと実行結果を示しながら丁寧に解説していきます。</p><h2 class="wp-block-heading" id="i-0">map関数とは？</h2><p class="wp-block-paragraph">map関数は、<strong>リストなどの各要素すべてに、同じ処理（関数）をまとめて適用する</strong>ための組み込み関数です。「map（マップ）＝対応づける」という名前のとおり、元の要素を一つひとつ別の値へ変換していくイメージですね。</p><p class="wp-block-paragraph">基本の書き方は次のとおりです。</p><pre class="wp-block-code"><code>map(適用したい関数, 対象のリストなど)</code></pre><p class="wp-block-paragraph">第1引数に「各要素へ行いたい処理」を関数として渡し、第2引数に「処理したいリスト」を渡します。ここで渡す関数は、名前のない使い捨ての関数である<a href="https://nano-toy-lab.com/python/python-lambda/">ラムダ式（lambda）</a>で書くことが多いので、あわせて覚えておくと理解がスムーズになります。</p><h2 class="wp-block-heading" id="i-1">map関数の基本的な使い方</h2><h3 class="wp-block-heading" id="i-2">リストの各要素を2倍にする</h3><p class="wp-block-paragraph">まずはシンプルに、リストのすべての要素を2倍にしてみましょう。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5]

# 各要素を2倍にする
result = map(lambda x: x * 2, numbers)

print(list(result))
# 実行結果: [2, 4, 6, 8, 10]</code></pre><p class="wp-block-paragraph">ここで1つ大切なポイントがあります。map関数が返すのはリストそのものではなく「map オブジェクト」と呼ばれるものです。そのため、中身を確認したり普通のリストとして使いたいときは、上のように <code>list()</code> で囲んでリストに変換してあげる必要があります。</p><h3 class="wp-block-heading" id="i-3">自作の関数を渡す</h3><p class="wp-block-paragraph">ラムダ式だけでなく、<code>def</code> で定義した自分の関数を渡すこともできます。処理が複雑なときは、こちらのほうが読みやすくなります。</p><pre class="wp-block-code"><code>def to_celsius(f):
    return (f - 32) * 5 / 9

fahrenheit = [32, 68, 104]

# 華氏を摂氏に変換する
celsius = map(to_celsius, fahrenheit)

print(list(celsius))
# 実行結果: [0.0, 20.0, 40.0]</code></pre><p class="wp-block-paragraph">華氏の温度が入ったリストを、まとめて摂氏に変換できました。for文を書かずに、リスト全体へ一気に関数を適用できるのがmap関数の魅力です。</p><h3 class="wp-block-heading" id="i-4">複数のリストを同時に処理する</h3><p class="wp-block-paragraph">map関数には、リストを複数渡すこともできます。その場合は、それぞれのリストから同じ位置の要素を取り出して関数に渡してくれます。複数のリストを同時に扱うという意味では<a href="https://nano-toy-lab.com/python/python-zip/">zip関数</a>と似ていますが、mapは同時に変換までしてくれるのが特徴です。</p><pre class="wp-block-code"><code>a = [1, 2, 3]
b = [10, 20, 30]

# 2つのリストの要素を足し合わせる
result = map(lambda x, y: x + y, a, b)

print(list(result))
# 実行結果: [11, 22, 33]</code></pre><h2 class="wp-block-heading" id="i-5">filter関数とは？</h2><p class="wp-block-paragraph">filter関数は、<strong>リストなどの要素の中から、条件に合うものだけを取り出す（絞り込む）</strong>ための組み込み関数です。「filter（フィルター）＝ろ過する」という名前のとおり、条件というフィルターを通して、必要な要素だけを残すイメージです。</p><p class="wp-block-paragraph">基本の書き方は次のとおりです。</p><pre class="wp-block-code"><code>filter(条件を判定する関数, 対象のリストなど)</code></pre><p class="wp-block-paragraph">第1引数には、要素を1つ受け取って <code>True</code> か <code>False</code> を返す関数を渡します。判定の結果が <code>True</code> になった要素だけが残る、というのがfilterの仕組みです。</p><h2 class="wp-block-heading" id="i-6">filter関数の基本的な使い方</h2><h3 class="wp-block-heading" id="i-7">偶数だけを取り出す</h3><p class="wp-block-paragraph">リストの中から偶数だけを取り出してみましょう。2で割った余りが0なら偶数、という条件で判定します。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5, 6]

# 偶数（2で割り切れる数）だけを取り出す
result = filter(lambda x: x % 2 == 0, numbers)

print(list(result))
# 実行結果: [2, 4, 6]</code></pre><p class="wp-block-paragraph">map関数と同じく、filter関数が返すのも「filter オブジェクト」です。中身を確認するときは <code>list()</code> でリストに変換しましょう。</p><h3 class="wp-block-heading" id="i-8">空文字や0を取り除く（第1引数に None）</h3><p class="wp-block-paragraph">filter関数の第1引数に、関数ではなく <code>None</code> を渡すと、「それ自体が偽（False扱い）となる要素」を自動的に取り除いてくれます。空文字や0、空のリストなどを一気に掃除したいときに便利です。</p><pre class="wp-block-code"><code>words = ["apple", "", "banana", "", "cherry"]

# 空文字を取り除く
result = filter(None, words)

print(list(result))
# 実行結果: ['apple', 'banana', 'cherry']</code></pre><h2 class="wp-block-heading" id="i-9">map関数とfilter関数を組み合わせる</h2><p class="wp-block-paragraph">map関数とfilter関数は、組み合わせて使うこともできます。たとえば「偶数だけを取り出して、さらにそれを2乗する」という処理は、次のように書けます。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 偶数だけを取り出して（filter）、それぞれを2乗する（map）
result = map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, numbers))

print(list(result))
# 実行結果: [4, 16, 36, 64, 100]</code></pre><p class="wp-block-paragraph">内側の filter で偶数（2, 4, 6, 8, 10）に絞り込み、その結果を外側の map で2乗しています。ネスト（入れ子）になっていて少し読みにくいので、実際のコードでは処理ごとに変数に分けて書くと、より分かりやすくなります。</p><h2 class="wp-block-heading" id="i-10">リスト内包表記との使い分け</h2><p class="wp-block-paragraph">ここまで読んで「あれ、これって<a href="https://nano-toy-lab.com/python/list-comprehension/">リスト内包表記</a>でも同じことができるのでは？」と気づいた方もいるかもしれません。そのとおりで、map関数とfilter関数の処理は、リスト内包表記でも書けます。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3, 4, 5, 6]

# map / filter を使った書き方
result1 = list(map(lambda x: x * 2, filter(lambda x: x % 2 == 0, numbers)))

# リスト内包表記を使った書き方
result2 = [x * 2 for x in numbers if x % 2 == 0]

print(result1)  # [4, 8, 12]
print(result2)  # [4, 8, 12]</code></pre><p class="wp-block-paragraph">どちらを使っても結果は同じです。一般的に、Pythonでは「シンプルで読みやすい」という理由から、リスト内包表記のほうが好まれる場面が多くなっています。一方で、すでに定義済みの関数をそのまま適用したいときは、map関数を使うとスッキリ書けることもあります。まずは両方の書き方を知っておき、状況に応じて読みやすいほうを選べるようにしておくと安心です。</p><h2 class="wp-block-heading" id="i-11">map・filterを使うときの注意点</h2><p class="wp-block-paragraph">最後に、初心者の方がつまずきやすいポイントを1つ紹介します。map関数やfilter関数が返すオブジェクトは「イテレータ」と呼ばれるもので、<strong>一度中身を取り出すと、2回目は空になってしまう</strong>という性質があります。</p><pre class="wp-block-code"><code>numbers = [1, 2, 3]
result = map(lambda x: x * 2, numbers)

print(list(result))  # [2, 4, 6]
print(list(result))  # [] ← 2回目は空になる！</code></pre><p class="wp-block-paragraph">このように、同じ result を2回 <code>list()</code> で取り出すと、2回目は空のリストになってしまいます。結果を何度も使い回したいときは、最初に <code>list()</code> でリストへ変換して変数に入れておくのがおすすめです。</p><h2 class="wp-block-heading" id="i-12">もっと効率的にPythonを学びたい人へ</h2><p class="wp-block-paragraph">map関数やfilter関数のように、Pythonには「知っていると一気に世界が広がる」便利な機能がたくさんあります。とはいえ、独学だけで進めていると「この書き方で合っているのかな？」「もっと良いやり方があるのでは？」と、つまずいたり不安になったりすることも多いですよね。</p><p class="wp-block-paragraph">そんなときは、プロの講師にマンツーマンで教えてもらえるプログラミングスクールを活用するのも一つの手です。未経験からPythonを習得したい方や、エンジニアへの転職を目指す方に向けて、転職サポートまで用意されているスクールもあります。まずは無料カウンセリングで、自分に合った学び方を相談してみるとイメージがつかみやすいですよ。</p><p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>
<h2 class="wp-block-heading" id="i-13">まとめ</h2><p class="wp-block-paragraph">今回は、Pythonのmap関数とfilter関数について解説しました。最後に要点を振り返っておきましょう。</p><ul class="wp-block-list"><li><strong>map関数</strong>は、リストなどの各要素すべてに同じ処理をまとめて適用する関数</li><li><strong>filter関数</strong>は、条件に合う要素だけを取り出して絞り込む関数</li><li>どちらも返り値はリストではないので、<code>list()</code> でリストに変換して使う</li><li>map と filter は組み合わせて「絞り込み＋変換」もできる</li><li>同じ処理はリスト内包表記でも書けるので、読みやすいほうを選ぶとよい</li><li>返り値のイテレータは一度取り出すと空になるため、使い回すときは先にリスト化しておく</li></ul><p class="wp-block-paragraph">map関数とfilter関数を使いこなせると、ループ処理をより短く、読みやすく書けるようになります。ぜひ手元のコードで実際に動かして、感覚をつかんでみてくださいね。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-map-filter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】datetimeで日付・時刻を扱う方法を初心者向けに徹底解説！</title>
		<link>https://nano-toy-lab.com/python/python-datetime/</link>
					<comments>https://nano-toy-lab.com/python/python-datetime/#respond</comments>
		
		<dc:creator><![CDATA[ナノトイラボ]]></dc:creator>
		<pubDate>Mon, 29 Jun 2026 10:13:50 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pythonの基礎]]></category>
		<guid isPermaLink="false">https://nano-toy-lab.com/?p=7376</guid>

					<description><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/06/eyecatch-11-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p>Pythonのdatetimeモジュールで日付・時刻を扱う方法を初心者向けに徹底解説。現在時刻の取得、strftime/strptimeによる文字列との変換、timedeltaを使った日付の計算まで、動くコード付きで分かりやすく紹介します。]]></description>
										<content:encoded><![CDATA[<p><img src="https://nano-toy-lab.com/wp-content/uploads/2026/06/eyecatch-11-520x300.jpg" class="webfeedsFeaturedVisual" width="520" height="300" /></p><p class="wp-block-paragraph">Pythonでプログラムを書いていると、「今日の日付を取得したい」「2つの日付の差を計算したい」「日付を見やすい形に整えたい」といった場面によく出くわします。こうした日付・時刻の処理をまとめて引き受けてくれるのが、標準ライブラリの<code>datetime</code>モジュールです。</p>
<p class="wp-block-paragraph">この記事では、<code>datetime</code>モジュールの基本的な使い方を、初心者の方にも分かりやすいように一つずつ丁寧に解説していきます。現在時刻の取得から、文字列との相互変換、日付の計算まで、実際に動くコードと実行結果を見ながら学んでいきましょう。</p>
<h2 class="wp-block-heading" id="i-0">datetimeモジュールとは？</h2>
<p class="wp-block-paragraph"><code>datetime</code>は、日付や時刻を扱うためにPythonに標準で用意されているモジュールです。追加のインストールは不要で、<code>import</code>するだけですぐに使えます。よく使うのは次の4つのクラスです。</p>
<ul class="wp-block-list"><li><code>datetime</code>：日付と時刻の両方を扱う</li><li><code>date</code>：日付（年・月・日）だけを扱う</li><li><code>time</code>：時刻（時・分・秒）だけを扱う</li><li><code>timedelta</code>：日数や時間の「差」を扱う</li></ul>
<p class="wp-block-paragraph">名前が少しややこしいですが、「モジュール名のdatetime」の中に「クラス名のdatetime」がある、という点だけ最初に押さえておくと混乱しません。それでは実際に使っていきましょう。</p>
<h2 class="wp-block-heading" id="i-1">現在の日付・時刻を取得する</h2>
<p class="wp-block-paragraph">まずは一番よく使う「今この瞬間」の取得です。日付と時刻の両方が欲しいときは<code>datetime.now()</code>、日付だけで十分なときは<code>date.today()</code>を使います。</p>
<pre class="wp-block-code"><code>from datetime import datetime, date

now = datetime.now()
print(now)          # 2026-06-29 10:30:45.123456
print(now.year)     # 2026
print(now.month)    # 6
print(now.hour)     # 10

today = date.today()
print(today)        # 2026-06-29</code></pre>
<p class="wp-block-paragraph">取得した<code>datetime</code>オブジェクトは、<code>.year</code>や<code>.month</code>、<code>.hour</code>のように属性へアクセスするだけで、年・月・日・時・分・秒をそれぞれ取り出せます。とてもシンプルですね。</p>
<h2 class="wp-block-heading" id="i-2">好きな日付・時刻を自分で作る</h2>
<p class="wp-block-paragraph">「特定の日付」を表すオブジェクトを作りたいときは、年・月・日などを直接指定します。引数は左から年、月、日、時、分、秒の順で、時刻部分を省略すると0時0分0秒になります。</p>
<pre class="wp-block-code"><code>from datetime import datetime, date

dt = datetime(2026, 12, 25, 18, 30, 0)
print(dt)            # 2026-12-25 18:30:00

d = date(2026, 1, 1)
print(d)             # 2026-01-01
print(d.weekday())   # 3  （0=月曜, 6=日曜なので木曜日）</code></pre>
<p class="wp-block-paragraph"><code>weekday()</code>メソッドを使うと曜日を数字で取得できます。月曜日が0、日曜日が6です。「その日が何曜日か」を判定したいときに便利なので覚えておきましょう。</p>
<h2 class="wp-block-heading" id="i-3">日付を見やすい文字列に変換する（strftime）</h2>
<p class="wp-block-paragraph"><code>datetime</code>オブジェクトをそのまま<code>print</code>すると「2026-06-29 10:30:45.123456」のような形式になります。これを「2026年6月29日」のように好きな形へ整えるのが<code>strftime()</code>メソッドです。書式コード（%Yなど）を組み合わせて指定します。</p>
<pre class="wp-block-code"><code>from datetime import datetime

now = datetime(2026, 6, 29, 9, 5, 30)
print(now.strftime('%Y/%m/%d'))        # 2026/06/29
print(now.strftime('%Y年%m月%d日'))     # 2026年06月29日
print(now.strftime('%H:%M:%S'))        # 09:05:30
print(now.strftime('%Y-%m-%d %H:%M'))  # 2026-06-29 09:05</code></pre>
<p class="wp-block-paragraph">よく使う書式コードを下にまとめました。</p>
<ul class="wp-block-list"><li><code>%Y</code>：西暦4桁（例: 2026）</li><li><code>%m</code>：月の2桁（例: 06）</li><li><code>%d</code>：日の2桁（例: 29）</li><li><code>%H</code>：24時間表記の時（例: 09）</li><li><code>%M</code>：分（例: 05）</li><li><code>%S</code>：秒（例: 30）</li></ul>
<p class="wp-block-paragraph">なお、同じ書式指定はf文字列の中でも使えます。<code>f'{now:%Y/%m/%d}'</code>のように書くと、よりすっきりとした記述になります。f文字列そのものの使い方は<a href="https://nano-toy-lab.com/python/python-f-string/">【Python】f文字列（f-string）の使い方を初心者向けに徹底解説！</a>で詳しく紹介していますので、あわせて読んでみてください。</p>
<h2 class="wp-block-heading" id="i-4">文字列を日付に変換する（strptime）</h2>
<p class="wp-block-paragraph">逆に、「2026-06-29」のような文字列を<code>datetime</code>オブジェクトに変換したいこともあります。たとえばCSVファイルやフォームから受け取った日付は最初は文字列です。これを変換するのが<code>strptime()</code>です。元の文字列がどんな形式かを書式コードで教えてあげるのがポイントです。</p>
<pre class="wp-block-code"><code>from datetime import datetime

text = '2026-06-29 09:05:30'
dt = datetime.strptime(text, '%Y-%m-%d %H:%M:%S')
print(dt)          # 2026-06-29 09:05:30
print(dt.month)    # 6
print(type(dt))    # &lt;class 'datetime.datetime'&gt;</code></pre>
<p class="wp-block-paragraph">文字列のままでは日付の計算ができませんが、<code>strptime()</code>で<code>datetime</code>に変換しておけば、このあと紹介する日付の足し算・引き算ができるようになります。<code>strftime</code>（出力用）と<code>strptime</code>（入力用）は名前が似ているので、「p = parse（読み取り）」と覚えると区別しやすいですよ。</p>
<h2 class="wp-block-heading" id="i-5">日付の差・加算・減算（timedelta）</h2>
<p class="wp-block-paragraph">「3日後の日付は？」「2つの日付は何日離れている？」といった計算には<code>timedelta</code>を使います。<code>datetime</code>同士を引き算すると<code>timedelta</code>が返り、<code>.days</code>で日数を取り出せます。</p>
<pre class="wp-block-code"><code>from datetime import datetime, timedelta

now = datetime(2026, 6, 29)
print(now + timedelta(days=7))    # 2026-07-06 00:00:00
print(now - timedelta(days=30))   # 2026-05-30 00:00:00

start = datetime(2026, 1, 1)
end = datetime(2026, 6, 29)
diff = end - start
print(diff.days)   # 179</code></pre>
<p class="wp-block-paragraph"><code>timedelta</code>には<code>days</code>のほか<code>hours</code>や<code>minutes</code>、<code>weeks</code>も指定できます。たとえば<code>timedelta(weeks=2)</code>で2週間後を求められます。日付を1日ずつずらしながら処理したいときは、for文・range関数と組み合わせると便利です。繰り返し処理に不安がある方は<a href="https://nano-toy-lab.com/python/python_for_range/">Pythonのfor文・range関数を攻略！これを知れば基本的な処理ができる使い方9選！</a>を先に読んでおくとスムーズです。</p>
<p class="wp-block-paragraph">また、計算した日付を一覧として持っておきたい場合は、結果をリストにためていくと扱いやすくなります。リストへの追加方法は<a href="https://nano-toy-lab.com/python/how-to-add-an-element-to-a-list-in-python-append-extend-insert-slice/">Pythonでリストに要素を追加する方法【append, extend, insert】（スライス）</a>で解説していますので参考にしてください。</p>
<h2 class="wp-block-heading" id="i-6">もっと効率的にPythonを学びたい人へ</h2>
<p class="wp-block-paragraph">ここまで<code>datetime</code>の使い方を見てきましたが、「独学だとつまずいたときに質問できる相手がいない」「実務で使えるレベルまで体系的に学びたい」と感じる方も多いのではないでしょうか。そんなときは、マンツーマン指導が受けられるプログラミングスクールを活用するのも一つの手です。未経験からのPython習得や転職サポートに対応したスクールも多く、まずは無料カウンセリングで学習プランを相談してみると、自分に合った進め方が見えてきます。</p>
<p class="wp-block-paragraph"><em>※本記事には広告（アフィリエイトリンク）を含みます。</em></p>

<p><a href="https://px.a8.net/svt/ejp?a8mat=4B5R09+8J7SSA+529E+HV7V6" rel="nofollow noopener" target="_blank">Pythonプログラミング｜マンツーマンレッスンで初めてをプロに育てる【Python Winner】</a><img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=4B5R09+8J7SSA+529E+HV7V6" alt=""></p>

<h2 class="wp-block-heading" id="i-7">まとめ</h2>
<p class="wp-block-paragraph">今回は、Pythonの<code>datetime</code>モジュールを使った日付・時刻の扱い方を解説しました。最後に要点を振り返っておきましょう。</p>
<ul class="wp-block-list"><li>現在の日時は<code>datetime.now()</code>、今日の日付は<code>date.today()</code>で取得できる</li><li>年・月・日などは<code>.year</code>のような属性で取り出せる</li><li><code>strftime()</code>で日付を好きな文字列の書式に変換できる</li><li><code>strptime()</code>で文字列を<code>datetime</code>に変換できる（p=parseと覚える）</li><li><code>timedelta</code>で日付の加算・減算や差の計算ができる</li></ul>
<p class="wp-block-paragraph"><code>datetime</code>は、ログの記録や期限の計算、データ集計など実務でも頻繁に登場する重要なモジュールです。まずは現在時刻の取得と<code>strftime</code>での書式変換から、ぜひ手を動かして試してみてくださいね。</p>]]></content:encoded>
					
					<wfw:commentRss>https://nano-toy-lab.com/python/python-datetime/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
