-
Pythonで文字列内の単語数を数えるプログラムの書き方【初心者向け】
テキスト処理を行っていると、「入力された文字列の中に単語がいくつ含まれているのか」「特定の単語が何回出現するのか」を調べたい場面によく出会います。この記事では、Pythonを使って文字列内の単語数を数え、その結果を出力する複数の方法を、サンプルコードと実行結果付きでわかりやすく解説します。 基本的な考え方はシンプルです。「単語は空白・改行・タブなどの区切り文字で分けられている」ため、区切り文字の出現回数を数えれば、単語数は「区切り文字の数+1」として求められます。 方法1:forループを使う まずは最も基本的な方法です。文字列を1文字ずつ順番に調べ、区切り文字が見つかるたびにカウントを1
-
【Python入門】文字列の中から最初の繰り返しのない文字を見つける2つの方法
この記事では、文字列や文字のストリームの中から最初に現れる繰り返しのない文字(ユニークな文字)を見つける方法を解説します。この問題には複数のアプローチがあり、本稿では同じ文字列に対して2つの異なるプログラムを作成して比較してみます。方法1:関数と辞書を使う方法(O(n)アルゴリズム)まずは、辞書(dict)を使って各文字の出現回数をカウントし、出現順序も保持する効率的な関数ベースの方法です。def firstNonRepeatingChar(str1): char_order = [] counts = {} for c in str1: if c in
-
同じ文字が最低d文字以上離れるように文字列を再配置するPythonプログラム
問題の概要 空でない文字列 str と整数 k が与えられたとき、同じ文字同士が互いに少なくとも距離 k 以上離れるように文字列を並べ替えることを考えます。 入力文字列はすべて小文字アルファベットで構成されているものとします。条件を満たす並べ替えが不可能な場合は、空文字列 "" を返します。 例1 str = tutorialspoint, k = 3 答え: tiotiotalnprsu どの文字も、同じ文字との間に少なくとも3文字以上の距離が保たれています。 str = aabbcc, k = 3 答え: abcabc 同じ文字が最低3文字分の間隔を空けて配置さ
-
Pythonで順列と組み合わせを求める方法|itertoolsモジュールの使い方を徹底解説
この記事では、Pythonを使ってシーケンス(リストや文字列など)から順列(permutation)と組み合わせ(combination)を求める方法を解説します。Pythonが他のプログラミング言語と比べて大きなアドバンテージを持っている点の一つは、豊富な標準ライブラリが最初から付属していることです。順列と組み合わせの計算も、Pythonに組み込まれているitertoolsパッケージを使えば、追加インストールなしで簡単に実現できます。順列・組み合わせを求める基本的な手順itertoolsを使った処理は、大きく次の3ステップで行います。ステップ1:必要なパッケージをインポートするまず、使用する
-
Pythonのオブジェクト指向プログラミング入門:クラス・インスタンス・カプセル化の基礎を解説
Pythonは、誕生当初からオブジェクト指向プログラミング言語として設計されてきました。クラスとオブジェクトは、オブジェクト指向プログラミングにおける2つの主要な構成要素です。クラスは新しい型のオブジェクトを作り出すための設計図であり、そのクラスから生成された個々の実体が「インスタンス(オブジェクト)」と呼ばれます。それでは、最もシンプルなクラスを作成してみましょう。Pythonでクラスを定義するまず、空のクラスを定義してみます。# クラスを定義する class Vehicle(): pass # 空のブロック # オブジェクトのインスタンス化 v = Vehicle() prin
-
OpenCV×Pythonで画像をぼかす方法|ガウシアンフィルタの基本と実装例
OpenCVは、画像処理に最も優れたPythonパッケージの一つです。信号にノイズが混入するのと同じように、画像にもさまざまな種類のノイズが含まれており、その主な発生源はカメラセンサーなど画像取得元そのものです。PythonのOpenCVパッケージには、画像を滑らかにする「スムージング(平滑化)」、いわゆる「ぼかし(ブラー)」処理を行うための機能が用意されています。 本記事では、その中でも特に一般的な手法であるガウシアンフィルタ(Gaussian Filter)を使った画像のぼかし方を解説します。ガウシアンフィルタを使用すると、画像内のシャープなエッジ(輪郭)を滑らかにしながら、過度なぼかしを
-
Pythonでマウスとキーボード操作を自動化する方法:pyautogui完全ガイド
この記事では、Pythonのpyautoguiモジュールを使って、マウスとキーボードの操作を自動化する方法を解説します。 PyAutoGUIは、マウスやキーボードをプログラムから制御できるライブラリです。画面上のクリック、文字入力、ショートカットキーの実行など、さまざまなGUI操作を自動化できます。クロスプラットフォームに対応しており、Windows・macOS・Linuxいずれでも動作する点が大きな特徴です。 PyAutoGUIはサードパーティ製のライブラリのため、使用前にインストールが必要です。以下のコマンドを実行しましょう。 pip install pyautogui マウス操作の自動化
-
Pythonパッケージの作成からPyPI公開まで完全ガイド|pip・setup.py・twineの使い方
Pythonには、自作コードをパッケージとして作成・公開するための非常にシンプルな仕組みが用意されています。この記事では、Pythonコードをパッケージ化し、PyPI(Python Package Index)で公開するまでの一連の手順を、初心者にもわかりやすく解説します。Pythonのパッケージ管理ツールPythonのパッケージ管理は、主に以下のツールによって行われます。pip:最も広く使われているパッケージ管理ツールです。OSへの手動インストールや更新作業をほぼ不要にし、パッケージとそのバージョン番号のリストを管理することで、別環境への正確な再現(複製)を可能にします。Python Pac
-
PythonとOpenCVで画像から直線を検出する方法|ハフ変換を徹底解説
この記事では、「ハフ変換」と呼ばれる手法を使って、画像内の直線を検出する方法を解説します。 ハフ変換とは? ハフ変換は、数学的な形式で表現できる「単純な形状」を検出するための特徴抽出手法です。多少途切れていたり歪んでいたりしても、その形状を検出できる点が大きな特徴です。ここでは、直線の場合にどのように機能するのかを見ていきます。 ここでいう「単純」な形状とは、少数のパラメータだけで表現できる形状のことです。例えば、直線は傾きと切片の2つのパラメータだけで表現でき、円は中心座標と半径の3つのパラメータ(x, y, r)で表現できます。 ハフ変換による画像からの直線検出 直線は方程式で表現でき
-
PythonでNZECエラーが発生する原因と対処法を徹底解説
NZEC(Non-Zero Exit Code)とは?NZECは「Non-Zero Exit Code(非ゼロ終了コード)」の略称です。終了コードとは、プログラムが正常に終了した場合(終了コード0)、またはエラーによって異常終了した場合(非ゼロの終了コード)に、実行中のプログラムからオペレーティングシステムへ返される数値のことを指します。PythonやJavaといった例外処理をサポートするプログラミング言語では、try-exceptブロックを活用することで、この種のエラーを捕捉し、適切に対処することが可能です。NZECエラーはランタイムエラーの一種であり、主に以下のようなケースで発生します。負
-
Pythonの短絡評価(ショートサーキット)とは?and / or の意外な挙動を徹底解説
プログラミング初心者にありがちなつまずきポイントの一つが、ブール演算子(and・or)の動作に対する誤解です。その原因は、Pythonインタプリタがこれらの式をどのような順序で評価しているのかを知らないことにあります。 たとえば、「and」と「or」を学んだばかりの頃は、次のような式を見て「変数Xが文字列 x か y のどちらかと一致するかどうかをチェックしているのだろう」と思い込みがちです。 X = (x or y) しかし、実際にはそうではありません。本当に何が起きているのかを確かめるために、対話モードのインタプリタを起動して、以下の式を入力してみましょう。 >>> x
-
Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで
Pythonで画像処理を行う際に、最も人気があり事実上の標準とされているライブラリがPillowです。Pillowは旧Python Image Library(PIL)の後継バージョンであり、シンプルな操作から高度な画像加工まで幅広い機能を提供しています。また、SciPyやMatplotlibなど他のPythonライブラリにおける簡易的な画像サポートの基盤としても利用されています。Pillowのインストール方法作業を始める前に、PythonとPillowが必要です。Linux環境では、Fedora、Debian/Ubuntu、ArchLinuxなどの主要ディストリビューションにおいて、以前はP
-
Pandasで学ぶPythonデータ分析と可視化の基本
Pandas(パンダス)は、データサイエンスやデータ分析の分野で最も人気のあるPythonライブラリの一つです。データの操作・分析・クレンジング(前処理)を得意としており、C言語で実装された低レベルライブラリ「NumPy」の上位に位置する高レベルな抽象化として機能します。本記事では、アナリストやデータサイエンティストとして必ず押さえておきたい重要ポイントを順を追って解説します。ライブラリのインストール必要なライブラリはpipコマンドで簡単にインストールできます。ターミナル(コマンドプロンプト)で以下のコマンドを実行してください。pip install pandasDataFrame と Ser
-
PythonのgetoptモジュールでCスタイルのコマンドラインオプションを解析する方法
コマンドライン引数へのアクセス(sys.argv)Pythonでは、標準ライブラリのsysモジュールを使うことで、コマンドラインから渡された任意の引数にアクセスできます。sys.argvはコマンドライン引数のリストであり、sys.argv[0]には実行中のプログラム(スクリプト名)が格納されます。まず、以下のコードをargs.pyという名前で保存してください。import sys print (argument list, sys.argv)このスクリプトをコマンドラインから次のように実行してみましょう。C:\python37>python args.py 11 22 argument
-
Pythonのplatformモジュールで実行環境(OS・ハードウェア)の情報を取得する方法
Python標準ライブラリのplatformモジュールには、実行環境のハードウェア構成、オペレーティングシステム、そしてPythonインタープリタ自体のバージョン情報などを簡単に調べるための関数が多数用意されています。本記事では、それぞれの関数の役割と実際の出力例をわかりやすく解説します。architecture()指定した実行ファイル(デフォルトではPythonインタープリタ自身)に問い合わせを行い、ビット数などのアーキテクチャ情報をタプル形式で返します。>>> import platform>>> platform.architecture()(64bi
-
zipappモジュール徹底解説 – 実行可能なPython zipアーカイブの作成と管理
zipappモジュールとはzipappモジュールは、Python 3.5以降の標準ライブラリに組み込まれているモジュールです。Pythonコードを含むzipファイル(実行可能なzipアーカイブ)の作成と管理を行うために使用され、作成されたアーカイブはPythonインタープリタから直接実行できます。zipappモジュールには、コマンドラインインターフェース(CLI)とプログラミング用インターフェースの両方が用意されています。コマンドラインから実行可能アーカイブを作成する実行可能なアーカイブを作成するには、エントリポイントとなるmain()関数を持つモジュールが必要です。以下のコマンドで実行可能ア
-
Pythonのstringモジュール徹底解説 ― 定数・capwords()・Formatter・Templateの使い方
Pythonの標準ライブラリに含まれるstringモジュールは、文字列操作に役立つ定数やクラス、そしてcapwords()というヘルパー関数を提供しています。本記事では、これらの機能を実際のコード例とともにわかりやすく解説します。 stringモジュールが提供する主な定数 stringモジュールには、よく使われる文字セットが定数として定義されています。バリデーション処理や文字種の判定などに活用できる便利な定数群です。 ascii_letters小文字と大文字の定数を連結した文字列(a〜z + A〜Z) ascii_lowercase小文字アルファベット abcdefghijklmnopqr
-
Pythonのftplibモジュールで実現するFTPプロトコルクライアントの使い方
Pythonの標準ライブラリ「ftplib」モジュールに含まれるFTPクラスは、FTPプロトコルのクライアント側機能を実装したものです。このクラスを利用することで、ファイルのアップロードやダウンロードなど、FTPサーバーとのやり取りを簡単に行うことができます。 FTPサーバーへの接続方法 FTPサーバーとの接続を確立するには、まずFTPオブジェクトを取得します。 con = FTP(hostname) FTPクラスの主なメソッド一覧 connect() 指定されたホストとポートに接続します。ポート番号のデフォルト値は、FTPプロトコル仕様で定められている「21」です。 getwelcome()
-
Pythonのpoplibモジュールで実現するPOP3プロトコルクライアント入門
PythonにおけるPOP3クライアントとは Python標準ライブラリの「poplib」モジュールには、POP3サーバーと通信するためのPOP3クラスとPOP3_SSLクラスが用意されています。 POP3クラスはPOP3サーバーへの接続をカプセル化し、RFC 1939で定義されたプロトコルを実装しています。また、POP3_SSLクラスは、SSLを下位の通信層として使用するPOP3サーバーに対応しており、より安全な接続が可能です。 ただし、POP3プロトコル自体はすでに時代遅れになりつつあり、多くのPOP3サーバーの実装品質は決して高いとは言えません。そのため、利用しているメールサーバーがIM
-
Pythonのpkgutilモジュール徹底解説|パッケージ拡張ユーティリティの使い方
特定のパッケージのモジュール検索パスを追加したり、パッケージ内に同梱されたリソースファイルを扱いたい場合には、Python標準ライブラリのpkgutilモジュールを使用します。pkgutilは、Pythonパッケージのインポート規則を変更するための各種関数を提供しており、さらにパッケージとして配布されるファイルからコード以外のリソースを読み込むことも可能です。extend_path(path, name)パッケージを構成するモジュール群の検索パスを拡張するための関数です。想定されている使い方は、パッケージの__init__.pyに以下のコードを記述することです。import pkgutil _