Pythonで文字列の中に変数などの値を埋め込むformatメソッドの使い方


embed-text

photo credit: txmx 2 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Pythonでクリップボードを使った便利ツールを作る非エンジニア&Windowsユーザー向けのシリーズです。

前回の記事はコチラです。

Pythonでリストのforループでインデックスと要素の両方を取り出して繰り返す方法
Pythonで初心者でも簡単にできるクリックボードを使ったツールの作り方をお伝えしています。今回はPythonのリストのforループで要素とともにインデックス番号も取り出す方法についてお伝えします。

forループでインデックスと要素の両方を取り出しながら繰り返しをする方法をお伝えしました。

さて、クリップボードに出し入れするデータは文字列になるのですが、文字列連結のステートメントって、すごくわかりづらいくなりやすいんですよね。

構文の美しさを追及しているPythonなら、何かいい方法あるのでは…?と思っていたら、すぐに見つけました。

formatメソッドです。

ということで、今回はPythonで文字列の中に変数の値を埋め込むというformatメソッドの使い方をお伝えします。

これまでの文字列連結のステートメントが一気にスッキリ読みやすくなりますよ。

では、行ってみましょう。

スポンサーリンク

これまでのおさらい

まず、これまでのおさらいです。

クリップボードの内容をMarkdownのリストに変換するツール

以下プログラムは前々回作成したものです。クリップボードにコピーした内容をMarkdownでいうリストに変換するというツールです。

import pyperclip
lines =pyperclip.paste().split()
text = ''
for line in lines:
    text = text + '- ' + line + '\r\n'
pyperclip.copy(text)

ここでいうと5行目の文字列連結のところ…ほかに比べて圧倒的に読みづらいですよね。

クリップボードの内容をMarkdownの番号付きリストに変換するツール

続いて、前回作成したもので、クリップボードにコピーした内容をMarkdownでいう番号付きリストに加工するというツールです。

import pyperclip
lines =pyperclip.paste().split()
text = ''
for i,line in enumerate(lines):
    text = text + str(i+1) + '. ' + line + '\r\n'
pyperclip.copy(text)

こちらも5行目…非常に読みづらいですよね。

これらの読みづらい文字列連結のステートメントをわかりやすい記述に書き直そうというのが、今回のミッションです。

formatメソッドとその使い方

formatメソッドは文字列に対して使用するメソッドで、文字列の中で指定した場所に、指定した変数などの値を埋め込んで文字列を生成するというものです。

インデックスを使う方法

書き方はこうです。

文字列.format(値0,値1,…)

これじゃわかりませんね。

文字列は、波括弧でインデックスを囲ったものを交えたものにすると、例えば{0}の位置に値0、{1}の位置に値1、…といったルールで変数の値が文字列の中に埋め込まれます。

例えば、以下にようなものですね。

>>> number=5
>>> text='テスト'
>>> '番号は{0}、テキストは{1}'.format(number,text)
'番号は5、テキストはテスト'

なお、変数が一つの場合は、インデックスは省略が可能ですので、以下のようにもできます。

>>> number=2
>>> '番号は{}'.format(number)
'番号は2'

キーワード引数を使う方法

さらに、インデックスだとちょっとわかりづらいよ、というときにはキーワード引数を設定することも可能です。

文字列.format(キーワード引数0=値0,キーワード引数1=値1,…)

これであれば波括弧内にキーワード引数を使うことができます。

>>> '番号は{number}、テキストは{text}'.format(number=2,text='テスト')
'番号は2、テキストはテスト'

なるほど…もう文字列連結とstr関数には、だいぶと退場いただくことになりそうですね…!

文字列連結ステートメントの可読性をformat関数で高める

クリップボードの内容をMarkdownのリストに変換するツール

クリップボードにコピーした内容をMarkdownでいうリストに変換するというツールですが、以下のように変更することができます。

import pyperclip
lines =pyperclip.paste().split()
text = ''
for line in lines:
    text = '{0}- {1}\r\n'.format(text,line)
pyperclip.copy(text)

文字列部分がまとまりましたので、前と比較すると読みやすくなったと思います。

クリップボードの内容をMarkdownの番号付きリストに変換するツール

こちらはクリップボードの内容を番号付きリストに変換するツールです。

import pyperclip
lines =pyperclip.paste().split()
text = ''
for i,line in enumerate(lines):
    text = '{0}{1}. {2}\r\n'.format(text,i+1,line)
pyperclip.copy(text)

str関数も不要になりましたね。

まとめ

以上、Pythonで文字列の中に値を埋め込むformat関数の使い方をお伝えしました。

まだ多少読み解くのに少し時間がかかるかも知れませんが、文字列が一か所にまとまっているので比較すると可読性は上がっていますよね。

また、数値型を文字列として連結する際のstr関数などは気にしなくてよくなります。

次回、この応用でExcelに貼り付けやすくする便利ツールの作り方をお伝えしていきますね。

Pythonでクリップボードの内容をExcelに貼り付けられるように変換するスクリプト
非エンジニアでも簡単にできるPythonによるクリップボードを使ったツールについてお伝えしています。今回はPythonでクリップボードの内容をExcelシートに表形式で貼り付けられるように変換するツールです。

どうぞお楽しみに!

連載目次:Pythonで簡単作成!クリップボードを使ったツールを作ろう

一般ビジネスマンの非エンジニア向けにPythonのpyperclipモジュールによる、クリップボードを使った簡単便利ツールの作り方をお伝えします。Webページやテキストファイルからコピーしたテキストを加工して貼り付ける…といったことが可能になります。超便利です。
  1. Pythonでクリップボードを操作!pyperclipを使ってコピーしたデータを取得する
  2. 初心者でも簡単!Pythonでデータを加工してクリップボードにコピーをする方法
  3. Pythonでリストのforループでインデックスと要素の両方を取り出して繰り返す方法
  4. Pythonで文字列の中に変数などの値を埋め込むformatメソッドの使い方
  5. Pythonでクリップボードの内容をExcelに貼り付けられるように変換するスクリプト
  6. Pythonでテキストファイルに追加で書き込みをする基本中の基本
  7. Pythonでcsvファイルにデータを書き込みをする基本中の基本

タイトルとURLをコピーしました