• Skip to main content
  • Skip to primary sidebar
  • ホーム
  • お問い合わせ

ハイパー仕事し隊

思い立った吉日!イロイロ試してオンリーワンの起業家を目指してます!

現在の場所:ホーム / ウェブアプリ関連 / あまり知られてない?Python でテキスト文に変数値を入れる方法

あまり知られてない?Python でテキスト文に変数値を入れる方法

2018年11月28日

PythonicTextHandling

ある程度 Python に慣れ、イロイロな方のコードを見ているのですが、Python 3.6 で使えるようになった f-string があまり使われていないようです。

他にも良い Pythonic な使い方があるにも関わらず、それさえも使われていないケースが多いように思います。

あまり認知されていないのかな?と思いまとめてみました!

ぜひ参考にしてみてください!

“+” で文をつなげる: Pythonic 度(★☆☆☆☆)

一番簡単でどの言語でも同様の方法で書けますが、一番 Pythonic ではない書き方ですね。

Javascript でよく見かける書き方でしたが、ES6 (ECMAScript 2015) でテンプレートリテラルが導入され、Javascript でさえこのような記述をしないようになっています。

短文だとあまり問題ないですが、長文であったり、たくさんの変数をつかう場合に「コードの可読性が落ちる」ので、あまり使わない方が良いでしょう。

使い方

このように書きます。

age = 30
print("I'm " + str(age) + " years old.")

言語を問わずよく見る書き方ですね。

こういうときに困る

既に上のサンプルでわかりますが、

  • スペースを追加したテキストに意識的に追加しないと型変換や
  • 型変換をしないとエラーになる
  • 長文になると、どこがテキストでどこが変数かがわかりにくくなる。

慣れれば問題なく対応できますが、より直感的な書き方があるので(f-string)、そちらを使った方が良いでしょう。

“%” で挿入する場所を指定する: Pythonic 度(★★☆☆☆)

公式ページに明記されていますが、何かと問題があり、推奨されていない使い方です。
printf 形式の文字列書式化

ここで解説されているフォーマット操作には、(タプルや辞書を正しく表示するのに失敗するなどの) よくある多くの問題を引き起こす、様々な欠陥が出現します。

こちらに関しても、Python ではより直感的な書き方があるので(f-string)、そちらを使った方が良いでしょう。

使い方

このように書きます。

age = 30
print("I'm %s years old." % age)

“$s” で String で出力と指定しているので、

name = 'John'
age = 30
print("My name is %s and I'm %s years old." % (name, age))

とタプル形式でまとめることで可能です。

こういうときに困る

書いていくと分かりますが、

  • パラメータが多くなって来ると、煩雑になる
  • 複数の変数を使う場合、順番通りに記述しないといけない

とういうことで、可読性がかなり落ちます。
可読性が落ちるということは、エラーが起きやすく or エラーに気づきにくくなるので避けるべきですね。

“.format” で順番指定やリピートをさせる: Pythonic 度(★★★☆☆)

この書き方は Python 2.6 から使えるようになり、すごい使いやすくなりました。
【公式ページ】文字列の書式化操作

使い方

このように書きます。

name = 'John'
age = 30
print("My name is {} and I'm {} years old.".format(name, age))

すごい便利になりましたね。

print("My name is {0} and I'm {1} years old. YES, {1}!!".format(name, age))

このように順番を指定したり、同じ変数を何度も利用することもできます。

person = {'name': 'John', 'age': 30}
print("My name is {name} and I'm {age} years old.".format(**person))

というように、”**” を使い辞書型を渡すこともできます。

こういうときに困る

確かにこれまで説明してきた “+” や “%” を使った書き方よりかは便利です。

ですが、それでも文字列が長くなったると可読性がおります。

特に、変数名が長くなるとテキスト部分(“この中”)と変数部分(str.format(この中))で二重に書くため、可読性が落ちます。

もちろん、辞書型を使えば改善できるので利用するのは全く問題ないですが、Python バージョンの制限で利用できないという場合を除き、次に説明する f-string が一番便利ですので、そちらを使えるなら使った方が良いでしょう。

“f-string” を使う: Pythonic 度(★★★★★)

Python 3.6 から利用できるようになったできたてホヤホヤのめちゃめちゃ便利なものになります。
【公式ページ】 フォーマット済み文字列リテラル

使い方

このように書きます。

name = 'John'
age = 30
print(f"My name is {name} and I'm {age} years old.")

いかがでしょうか?
なかなか直感的になり、読みやすくなったと思いませんか?
これだけではなんとも。。。というそこのあなた!!
他にも便利なことができるんですよ!!

便利機能 1: 計算ができる

“{}” の中に計算式を直接かき、計算させることができます。
print(f’8 bit は、10 進数では {2**8} となる’)
これで無駄に計算結果を格納・表示するために変数を準備する必要がなくなりますね。

便利機能 1: 関数が実行できる

任意に作成した関数や標準関数が利用することができます。

import datetime
name = 'John'
print(f"My name is {name.upper()} and I'm {age} years old as of {datetime.date.today()}.")

もちろん、関数には引数を渡すこともできます。

まとめ

いくつもの方法がありますが、推奨されていないものもあったりしますので、ご利用には注意してください。

ただ、Python 3.6 以上であれば、無条件で f-string を使った方が良いでしょう。

Github などで昔の書き方をしている人もいるので、他の記述方法は「読める」程度で問題ないですね。

カテゴリー: ウェブアプリ関連
タグ: python

最初のサイドバー

簡単な自己紹介

ごく普通の 30 代サラリーマンです。世界を旅しながらの生活が目標!!
IT 全般に興味あり: Python (Flask, Django) / PHP (Laravel, Wordpress) / Golang / AWS / Network Security.
Read More…

サイト内検索

最近の投稿

  • 【VS Code プラグイン】Postman より便利!? Rest Client をオススメする理由
  • MySQL と phpMyAdmin を Docker Compose で作って、Python から接続する
  • Windows10 上の Ubuntu から “curl localhost” を実行すると “Connection refused” になる原因
  • リダイレクトの仕組み知ってる?Flask で調べるてみるのだ。
  • Apple 独自の 検索エンジンで何が変わるのか

アーカイブ

  • 2021年3月
  • 2021年1月
  • 2020年10月
  • 2019年3月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年5月
  • 2018年4月

タグ

amazon cloudfront amazon s3 aws coursera css django docker flask fullstack gcp github hawaii life in USA linux mongodb mysql postgresql pwa python sqlite vagrant

Contact
Privacy Policy and Term of Use
Copyright © 2025 · All rights reserved.