Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列の先頭から数値プレフィックスを取得する方法

文字列の先頭に数字が含まれている場合、その数値部分だけを取り出したいことがあります。本記事では、Pythonを使って文字列の先頭に付与された数値プレフィックスを抽出する3つの方法を、具体的なコード例とともに解説します。

isdigitとtakewhileを使う方法

isdigit関数は、文字列の各文字が数字かどうかを判定します。itertoolsモジュールのtakewhile関数と組み合わせることで、条件が真である間だけ要素を取り出せるため、文字列の先頭から連続する数字だけを効率的に結合・取得できます。

サンプルコード

from itertools import takewhile

# 対象の文字列
stringA = "347Hello"
print("元の文字列 :", stringA)

# takewhileで先頭の数字のみを抽出
res = ''.join(takewhile(str.isdigit, stringA))

# 結果を出力
print("抽出された数値プレフィックス:\n", res)

実行結果

元の文字列 : 347Hello
抽出された数値プレフィックス:
347

re.subを使う方法

正規表現モジュールreを使用すると、パターンに一致した部分を別の文字列へ置換できます。\D.*というパターンは「数字以外の文字と、それ以降のすべての文字」に一致するため、これを空文字列に置き換えることで、先頭の数字だけが残ります。

サンプルコード

import re

# 対象の文字列
stringA = "347Hello"
print("元の文字列 :", stringA)

# re.subで数字以外をすべて除去
res = re.sub(r'\D.*', '', stringA)

# 結果を出力
print("抽出された数値プレフィックス:\n", res)

実行結果

元の文字列 : 347Hello
抽出された数値プレフィックス:
347

re.findallを使う方法

findall関数も同様の目的で利用できます。こちらでは\d+(1つ以上の連続する数字)というパターンを使い、マッチしたすべての数字列をリストとして取得し、joinで結合します。なお、この方法は文字列内のすべての数字グループを対象とする点に注意してください。先頭のみを厳密に抽出したい場合は、前述のtakewhileを使う方法がより適切です。

サンプルコード

import re

# 対象の文字列
stringA = "347Hello"
print("元の文字列 :", stringA)

# findallで数字列を抽出して結合
res = ''.join(re.findall(r'\d+', stringA))

# 結果を出力
print("抽出された数値プレフィックス:\n", res)

実行結果

元の文字列 : 347Hello
抽出された数値プレフィックス:
347

まとめ

文字列の先頭から数値プレフィックスを取得するには、主に以下の3つのアプローチがあります。

  • isdigit + takewhile: 先頭から連続する数字のみを確実に抽出でき、意図に最も合致する方法
  • re.sub: 数字以外を一括で置換・除去するシンプルな方法
  • re.findall: 文字列中の数字列をすべて抽出できる汎用的な方法

用途に応じて最適な手法を選択しましょう。「先頭の数字だけが必要」であれば、takewhileを使う方法が最も安全で直感的です。

  1. 指定された文字列が母音回文であるかどうかを確認するPythonプログラム

    はじめに この記事では、「与えられた文字列から子音をすべて取り除いたとき、残った母音だけの文字列が回文になっているかどうかを判定する」という問題を、Pythonプログラムで解く方法を解説します。 問題の概要 問題文:母音と子音の両方を含む文字列が与えられます。まず文字列からすべての子音を取り除き、その結果得られた文字列が回文(前から読んでも後ろから読んでも同じ並びになる文字列)であるかどうかを確認してください。 解決のアプローチ この問題は、以下の手順で解くことができます。 元の文字列を先頭から順に走査し、母音(a・e・i・o・u)だけを取り出して新しい文字列を作成します。 母音が1つも

  2. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列