Pythonで文字列から頭字語(アクロニム)を生成する方法
プログラミングでは、フレーズを表す文字列から頭字語(アクロニム)を作成したい場面がよくあります。本記事では、Pythonを使って文字列から頭字語を生成するシンプルなアルゴリズムを解説します。
問題の概要
あるフレーズを表す文字列 s が与えられたとき、その頭字語を求めます。生成される頭字語は以下の条件を満たす必要があります。
- すべて大文字にすること
- 「and」という単語は含めないこと
たとえば、入力が "Indian Space Research Organisation" の場合、出力は ISRO となります。
解決の手順
この問題は、次のステップで解くことができます。
- トークン化: 文字列
sを空白で分割し、各単語を配列(リスト)として取得します。 - 結果用の空文字列を準備: 頭字語を格納するための空の文字列を用意します。
- 各単語をループ処理: 各単語について、「and」でない場合はその単語の最初の文字を結果の文字列に連結します。
- 大文字に変換して返す: 最終的な文字列をすべて大文字に変換して返します。
実装例
それでは、実際のコードを見てみましょう。
class Solution:
def solve(self, s):
tokens = s.split()
string = ""
for word in tokens:
if word != "and":
string += str(word[0])
return string.upper()
ob = Solution()
print(ob.solve("Indian Space Research Organisation"))
入力
"Indian Space Research Organisation"
出力
ISRO
コードのポイント
s.split()は、文字列を空白区切りで分割し、単語のリストを返します。引数を指定しない場合、連続する空白も自動的に処理されます。word[0]で各単語の先頭の1文字を取り出し、結果の文字列に追加していきます。- 最後に
.upper()を呼び出すことで、小文字で始まる単語があっても確実に大文字の頭字語になります。 - 「and」の判定は大文字・小文字を区別します。より堅牢にしたい場合は
word.lower() != "and"のように比較するとよいでしょう。
このように、Pythonではわずか数行のコードで頭字語を生成できます。文字列操作の基本的なテクニックである split() とスライス、upper() を組み合わせるだけで、実用的な処理が実現できる好例です。
-
Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説
Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial
-
文字列内の単語の出現回数をカウントするPythonプログラムの作成方法
この記事では、ユーザーから入力された文字列の中に、指定した単語が何回出現するかをカウントし、その結果を出力するPythonプログラムを紹介します。文字列操作の基礎を学ぶのに最適な題材です。 実行例 入力:Python is an interpreted high-level programming language for general purpose programming. カウントする単語:programming 出力:2 上記の例では、「programming」という単語が文中に2回出現しているため、出力は「2」となります。 アルゴリズム wordoccurences(n, p