読み込み中...

Pythonでストリングに変換!str関数の全面解説10選

ノートパソコンの画面に表示されるPythonのstr関数を用いたコード Python
この記事は約15分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Pythonを使ったプログラミングにおいて、文字列変換は頻繁に行われる作業です。

数値やオブジェクトを文字列に変換するというのは、非常に一般的な操作で、ログの出力やファイル名の生成など、多くの場面で必要とされます。

Pythonで文字列変換を行うためには、str関数を使います。

この記事では、str関数の基本的な使い方から応用例まで、10の事例を通じて詳しく解説します。

●str関数とは

str関数は、Pythonの組み込み関数の一つで、引数として与えられたオブジェクトを文字列形式に変換します。

数値やリスト、辞書など、あらゆる種類のオブジェクトを文字列に変換することが可能です。

その結果、データを人間が理解しやすい形式で表示したり、文字列操作を行うための前処理として利用されます。

○str関数の基本的な使い方

str関数の使い方は非常に簡単です。

下記のように、str関数の引数に変換したいオブジェクトを指定します。

str(オブジェクト)

●str関数の詳細な使い方

str関数を用いてさまざまな種類のデータを文字列に変換する例を紹介します。

○サンプルコード1:整数を文字列に変換

このコードでは、整数を文字列に変換しています。

具体的には、100という整数を文字列に変換し、その結果を表示しています。

num = 100
str_num = str(num)
print(str_num)
print(type(str_num))  # <class 'str'>

このコードを実行すると、”100″という文字列が出力され、その型が’class str’であることが確認できます。

これにより、整数が無事に文字列に変換されたことがわかります。

○サンプルコード2:浮動小数点数を文字列に変換

このコードでは、浮動小数点数を文字列に変換しています。

具体的には、3.14という浮動小数点数を文字列に変換し、その結果を表示しています。

num = 3.14
str_num = str(num)
print(str_num)
print(type(str_num))  # <class 'str'>

このコードを実行すると、”3.14″という文字列が出力され、その型が’class str’であることが確認できます。

これにより、浮動小数点数もまた、str関数を使って文字列に変換できることがわかります。

○サンプルコード3:リストを文字列に変換

このコードでは、リストを文字列に変換しています。

具体的には、[1, 2, 3]というリストを文字列に変換し、その結果を表示しています。

list_data = [1, 2, 3]
str_list = str(list_data)
print(str_list)
print(type(str_list))  # <class 'str'>

このコードを実行すると、”[1, 2, 3]”という文字列が出力され、その型が’class str’であることが確認できます。

これにより、リストもまた、str関数を使って文字列に変換できることがわかります。

●str関数の応用例

次に、str関数の応用例を見ていきましょう。

これらの例を通じて、str関数がいかに多様な場面で活用されるかを理解していきましょう。

○サンプルコード4:文字列結合に使う

このコードでは、文字列と数値の結合を行っています。

具体的には、”I have “という文字列と10という整数を結合し、”I have 10 apples.”という文字列を作成しています。

num_apples = 10
sentence = "I have " + str(num_apples) + " apples."
print(sentence)  # "I have 10 apples."

このコードを実行すると、”I have 10 apples.”という文字列が出力されます。

これにより、数値と文字列の結合にstr関数が活用できることがわかります。

○サンプルコード5:ファイル名の生成に使う

このコードでは、ファイル名の生成にstr関数を用いています。

具体的には、基本となるファイル名と連番を組み合わせて、一連のファイル名を生成しています。

for i in range(1, 4):
    filename = "file_" + str(i) + ".txt"
    print(filename)  # "file_1.txt", "file_2.txt", "file_3.txt"

このコードを実行すると、”file_1.txt”, “file_2.txt”, “file_3.txt”という一連のファイル名が出力されます。

これにより、str関数を使って動的にファイル名を生成できることがわかります。

○サンプルコード6:日付と時間の表示に使う

Pythonで日付や時間を扱う際、str関数を使用すると簡単に文字列に変換することができます。

特に、ログ出力やデバッグの際には非常に便利です。

次のサンプルコードでは、datetimeモジュールを使って現在の日付と時間を取得し、それを文字列に変換するコードを紹介しています。

import datetime

# 現在の日付と時間を取得
now = datetime.datetime.now()

# str関数を使って文字列に変換
str_now = str(now)

print(str_now)

このコードでは、まず現在の日付と時間を取得するために、datetimeモジュールのdatetime.now関数を使用しています。

そして、str関数を使って取得した日付と時間を文字列に変換しています。

このコードを実行すると、例えば「2023-07-20 12:34:56.789123」のような形式で現在の日付と時間が表示されます。

日付と時間は「年-月-日 時:分:秒.マイクロ秒」の形式で表示され、これがstr関数による変換結果となります。

○サンプルコード7:文字列の書式設定に使う

Pythonのstr関数は、文字列の書式設定にも使えます。数値を特定の形式の文字列に変換したいときや、文字列内に変数の値を埋め込む際に活用できます。

下記のサンプルコードでは、ある数値を特定の書式の文字列に変換するコードを紹介しています。

# 数値
num = 12345.6789

# str関数とformatメソッドを使って2桁の小数点数に書式設定
formatted_str = str("{:.2f}".format(num))

print(formatted_str)

この例では、数値を保持している変数numを、str関数とformatメソッドを組み合わせて2桁の小数点数に書式設定しています。

“{:.2f}”はformatメソッドの書式指定で、小数点以下2桁の浮動小数点数を意味します。

このコードを実行すると、「12345.68」という結果が表示されます。

これがstr関数による変換結果です。

○サンプルコード8:JSON形式のデータに使う

PythonでJSON形式のデータを扱う際、str関数を使って文字列に変換することが可能です。

JSON形式のデータを文字列に変換すると、データの可読性が上がり、デバッグが容易になります。

下記のサンプルコードでは、辞書をJSON形式の文字列に変換するコードを紹介します。

import json

# 辞書
data = {
    "name": "Taro",
    "age": 20,
    "skills": ["Python", "Java", "C"]
}

# str関数を使ってJSON形式の文字列に変換
json_str = str(json.dumps(data, indent=4))

print(json_str)

この例では、まずjsonモジュールのdumps関数を使って辞書をJSON形式の文字列に変換しています。

その後、その結果をstr関数で文字列に変換しています。

indent引数に4を指定することで、JSONデータが見やすい形式で出力されます。

このコードを実行すると次のような結果が表示されます。

{
    "name": "Taro",
    "age": 20,
    "skills": [
        "Python",
        "Java",
        "C"
    ]
}

これがstr関数による変換結果です。

これにより、Pythonの辞書をJSON形式の文字列に変換することができました。

○サンプルコード9:URLのエンコードに使う

Pythonのstr関数を使用してURLをエンコードする方法を紹介します。

この例では、URL内に特殊な文字が含まれていても、それを適切にエンコードして扱うことが可能です。

まずは、エンコードしたいURLを含む文字列を定義します。

url = "https://www.example.com/?key=テスト&value=123"

次に、この文字列をURLエンコードするために、urllib.parseモジュールのquote関数を使用します。

しかし、この関数は文字列しか引数に取らないため、str関数を使用してURLを文字列に変換します。

import urllib.parse

url_encoded = urllib.parse.quote(str(url))
print(url_encoded)

このコードを実行すると、URLが適切にエンコードされ、特殊な文字も安全に扱える形式に変換されます。

結果は次のようになります。

https%3A//www.example.com/%3Fkey%3D%E3%83%86%E3%82%B9%E3%83%88%26value%3D123

ここでは、str関数がURLを正確に文字列に変換し、その後でquote関数がその文字列をエンコードしています。

○サンプルコード10:辞書を文字列に変換する

Pythonでよく使われるデータ型の一つに「辞書」があります。

辞書はキーと値のペアを格納するのに便利ですが、この辞書を文字列に変換するにはstr関数を使用します。

まずは、キーと値のペアを持つ辞書を作成します。

dictionary = {"name": "John", "age": 30, "city": "New York"}

次に、この辞書をstr関数を使用して文字列に変換します。

dictionary_str = str(dictionary)
print(dictionary_str)

このコードを実行すると、辞書が文字列に変換され、次のように出力されます。

"{'name': 'John', 'age': 30, 'city': 'New York'}"

ここで、辞書の各要素がシングルクォートで囲まれた形で表示されています。

これは、Pythonの辞書を文字列に変換した際の標準的な形式です。

これにより、プログラム内で辞書を文字列として扱うことができます。

●str関数を使用する際の注意点と対処法

Pythonのstr関数は非常に便利ですが、その使用にはいくつか注意点があります。

一つ目の注意点は、str関数はオブジェクトの文字列表現を返すだけで、オブジェクトそのものを文字列に変換するわけではないということです。

そのため、オブジェクトの内容を詳細に表示したい場合や、オブジェクトを再利用する必要がある場合には、他の手段を検討する必要があります。

class SampleClass:
    def __init__(self, value):
        self.value = value

sample = SampleClass(10)
sample_str = str(sample)
print(sample_str)

このコードを実行すると、次のような出力が得られます。

<__main__.SampleClass object at 0x7f095d1bf700>

これは、オブジェクトがメモリ上のどこに存在しているかを表す情報です。

しかし、この情報だけでは、オブジェクトが持っている値や属性については何もわかりません。

これを解決するためには、オブジェクトの__str__メソッドをオーバーライドすると良いでしょう。

class SampleClass:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return "SampleClass with value " + str(self.value)

sample = SampleClass(10)
sample_str = str(sample)
print(sample_str)

このコードを実行すると、次のような出力が得られます。

SampleClass with value 10

ここで、オブジェクトの__str__メソッドをオーバーライドしているため、str関数がオブジェクトの文字列表現を返す際に、この__str__メソッドが呼び出されるようになります。

二つ目の注意点は、str関数は非ASCII文字を含む文字列を変換する際に、その文字列をそのままの形で返すということです。

しかし、文字列を他のシステムやユーザーと共有する際には、これが問題になることがあります。

たとえば、次のようなコードを考えてみましょう。

japanese_str = "こんにちは"
japanese_str_encoded = str(japanese_str)
print(japanese_str_encoded)

このコードを実行すると、次のような出力が得られます。

こんにちは

しかし、この文字列をASCII文字のみを扱うシステムや、非ASCII文字を正しく表示できない環境で使おうとすると、文字化けやエラーが発生する可能性があります。

これを解決するためには、文字列をエンコードする際に

適切なエンコーディングを指定することが重要です。

その一例として、Pythonのencodeメソッドを使ってUTF-8でエンコードする方法があります。

japanese_str = "こんにちは"
japanese_str_encoded = japanese_str.encode('utf-8')
print(japanese_str_encoded)

このコードを実行すると、次のような出力が得られます。

b'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'

これは、日本語の文字列をUTF-8でエンコードした結果です。

これを使って、非ASCII文字を含む文字列を他のシステムやユーザーと安全に共有することが可能になります。

●str関数のカスタマイズ方法

Pythonのstr関数は非常に便利なツールで、その使い方は様々です。

しかし、デフォルトの動作だけでは対応できない場合や、特定の結果を得たい場合には、str関数の動作をカスタマイズすることができます。

その一つの方法は、オブジェクトの__str__メソッドをオーバーライドすることです。

これにより、そのオブジェクトがstr関数によって文字列に変換される際の動作を自由に定義することが可能になります。

例えば、次のようなクラスを考えてみましょう。

class MyClass:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return f'MyClass(value={self.value})'

このクラスは、__str__メソッドをオーバーライドしており、その中で自身のvalue属性を表示するように定義されています。

そのため、このクラスのインスタンスをstr関数で文字列に変換すると、次のような結果が得られます。

my_instance = MyClass(10)
print(str(my_instance))  # 出力: MyClass(value=10)

ここで、str関数がMyClassオブジェクトを文字列に変換する際に、その__str__メソッドが呼び出されています。

また、str関数は、引数として与えられたオブジェクトの__str__メソッドを呼び出すだけでなく、その結果をさらに操作することも可能です。

例えば、次のようなコードを考えてみましょう。

class MyClass:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return f'MyClass(value={self.value})'

def my_str(object):
    original_str = str(object)
    modified_str = original_str.upper()
    return modified_str

このコードでは、新しいmy_str関数を定義しています。

この関数は、まず元のオブジェクトの文字列表現を取得し、それを大文字に変換したものを返します。

そのため、このmy_str関数を使ってMyClassのインスタンスを文字列に変換すると、次のような結果が得られます。

my_instance = MyClass(10)
print(my_str(my_instance))  # 出力: MYCLASS(VALUE=10)

ここで、my_str関数がMyClassオブジェクトの文字列表現を取得し、それを大文字に変換しています。

これにより、str関数のデフォルトの動作を変更し、特定の結果を得ることが可能になります。

まとめ

Pythonのstr関数は、数値やオブジェクトを文字列に変換する際に非常に便利なツールです。

しかし、その使用には注意点があり、特定の結果を得るためにはその動作をカスタマイズする必要がある場合もあります。

この記事では、str関数の基本的な使い方から応用例、注意点、カスタマイズ方法までを詳しく解説しました。

これを通じて、Pythonで文字列に変換する作業がより簡単に、そしてより効果的に行えるようになることを願っています。

これからもPythonのプログラミングに挑戦する際には、str関数を忘れずに活用してみてください。

そして、その他のPythonの関数や機能についても学んでいきましょう。

それがあなたのプログラミングスキルをさらに向上させる鍵となるでしょう。