【Python入門】Python文字列から文字や数値を抽出する方法とは?文字と数値の抽出方法を徹底解説

Python

Pythonは、文字列の操作に非常に適した言語です。Pythonには様々な方法がありますが、ここではいくつかの一般的な方法を紹介します。これらの方法を理解することで、文字列をより効率的に操作できるようになります。本記事ではPython文字列から文字列を抽出する方法を初心者向けの内容を取り扱います。

下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。

・Pythonの場合、どうやって文字列から文字や数値を抽出するの?
・Pythonで、正規表現を用いてどの様に文字列から文字や数値を抽出するの?

例1:インデックス/スライスを使用する

文字列内の特定の文字を抽出するには、インデックス/スライスを使用することができます。

my_string = "Hello world!"
print(my_string[0])   # 最初の1文字
print(my_string[0:5]) # 最初の5文字
H
Hello

例2:正規表現を使用する

正規表現を使用すると、複雑な文字列の抽出が可能になります。

### Input: v 1.0 2.0 3.0
### Output: [1.0, 2.0, 3.0]

import re

my_string = "v 1.0 2.0 3.0"
numbers = re.findall('\d+\.\d+', my_string)
print(numbers) # [1.0, 2.0, 3.0]

正規表現「r’\d+.\d+’」は、以下のように解釈できます。

  • \d+: 数字が1個以上
    • \d:数字1文字
    • 文字+:文字が1個以上
  • \. :ピリオド(ドット)文字
### Input: v 1.0 2.0 3.0
### Output: [1.0, 2.0, 3.0]

import re

my_string = "v 1.0 2.0 3.0"
numbers = re.findall('[\d\.]+', my_string)
print(numbers) # [1.0, 2.0, 3.0]

正規表現「r'[\d.]+’」は、以下のように解釈できます。

  • [\d\.]: 数字もしくはピリオド(ドット)文字
    • [文字]:グループ化
    • \d:数字1文字
    • \. :ピリオド(ドット)文字
  • 文字+:文字が1個以上
### Input: f 1 2 3
### Output: [1, 2, 3]

import re

my_string = "f 1 2 3"
numbers = re.findall(r'\d+', my_string)
print(numbers) # ['1', '2', '3']

正規表現「r’\d+’」は、以下のように解釈できます。

  • \d+: 数字が1個以上
    • \d:数字1文字
    • 文字+:文字が1個以上
### Input: name John age 20 height 170
### Output: ['name', 'John', 'age', '20', 'height', '170']
### Output: John
### Output: 20
### Output: 170

import re

my_string = "name John age 20 height 170"
all = re.findall(r"\w+", my_string)
name = re.search(r"name\s(\w+)", my_string)
age = re.search(r"age\s(\w+)", my_string)
height = re.search(r"height\s(\w+)", my_string)
print(all)              # ['name', 'John', 'age', '20', 'height', '170']
print(name.group(1))    # John
print(age.group(1))     # 20
print(height.group(1))  # 170

正規表現「r”\w+”」は、以下のように解釈できます。

  • \w+: 英数字もしくはアンダースコアが1個以上
    • \w:英数字もしくはアンダースコア
    • 文字+:文字が1個以上
### Input: name(Python)
### Output: Python

import re

my_string = "name(Python)"
word1 = re.findall(r"name\((.+)\)", my_string)
word2 = re.search(r"name\((.+)\)", my_string)
print(word1[0])         # 'Python'
print(word2.group(1))   # 'Python'

正規表現「r”name((.+))”」は、以下のように解釈できます。

  • (文字):指定部分
  • .+:任意の1文字が1個以上
    • .:任意の1文字
    • 文字+:文字が1個以上

まとめ

Pythonでは、文字列を抽出するために様々な方法があります。インデックス、スライス、正規表現、効率的に文字列を処理することができます。是非、この記事を参考にして、Pythonでの文字列処理のスキルアップに役立ててください。

関連検索ワード

How to extract Words and Numbers from Python string?

関連キーワード

python, 入門, 使い方, 初心者, 文字列, 抽出, 正規表現, re