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

Pythonでデータ値を文字列に補間する方法は?


さまざまな形式を使用して、データ値を文字列に補間できます。これを使用して、コードを掘り起こし、レポート、フォーム、およびその他の出力を作成できます。このトピックでは、文字列をフォーマットする3つの方法と、データ値を文字列に補間する方法について説明します。

Pythonには、文字列をフォーマットする3つの方法があります。

  • %-古い学校(Python 2および3でサポート)

  • ()-新しいスタイル(Python 2.6以降)

  • {}-f-strings(Python 3.6以降)

古いスタイル:%

古いスタイルの文字列フォーマットの形式はformat_string%dataです。フォーマット文字列は補間シーケンスに他なりません。

説明
構文
%s
文字列
%d
10進数
%x
hexa-int
%o
8進数-int
%f
decimal-float
%e
指数-浮動小数点
%g
10進数または指数浮動小数点
%%
文字通りの%


# printing integer with % style type.
print('output \nprinting a number in string format %s' % 42)
print('printing a number in string decimal %d' % 42)
print('printing a number in string hexa-int %x' % 42)
print('printing a number in string exponential-float %g' % 42)

出力

printing a number in string format 42
printing a number in string decimal 42
printing a number in string hexa-int 2a
printing a number in string exponential-float 42

古い形式の文字列と整数の補間%

文字列内の%sは、文字列を補間することを意味します。文字列内の%出現数は、文字列に続く%の後のデータ項目の数と一致する必要があります。

単一のデータ項目は、その最後の%の直後に実行されます。複数のデータをタプルにグループ化する必要があります。以下の例を参照してください。

%と型指定子の間のフォーマット文字列に他の値を追加して、最小幅と最大幅、配置、および文字の塗りつぶしを指定することもできます。

1. + means right-align
2. - means left-align
3. . means separate minwidth and maxchars.
4. minwidth means mimimu field width to use
5. maxchars means how many characters/digits to print from the data value


player = 'Roger Federer'
country = 'Legend'
titles = 20

# note please try this only on Python 2. If you are running on Python3 output for below commands will vary a lot.

print('Output \n*** Tennis player %s From %s had won %d titles ' %(player,country,titles))
print('%s' % player) # print player
print('%5s' % player) # print firstname of player
print('%-7s' % player) # Last Name of player
print('%5.7s' % player) # Last Name of player with 5 leading spaces

出力

*** Tennis player Roger Federer From Legend had won 20 titles
Roger Federer
Roger Federer
Roger Federer
Roger F

新しいスタイルの文字列と整数の補間:{}

Python 3.5以降のバージョンを使用している場合は、以下のセクションで説明する「新しいスタイル」のフォーマットを使用できます。

「{}」フォーマットの構文はformat_string.format(data)です。

format()関数への引数は、フォーマット文字列の{}プレースホルダーの順序である必要があることを忘れないでください。読みやすくするために、辞書または名前付き引数をフォーマットに渡すことができます。

player = 'Roger Federer'
player = 'Roger_Federer'
country = 'Legend'
titles = 20

print('Output \n{}'.format(player))
print(' *** Tennis player {} From {} had won {} titles '.format(player,country,titles))

# positonal arguments
print(' *** Tennis player {1} From {2} had won {0} titles '.format(titles,player,country))

# named arguments
print(' *** Tennis player {player} From {country} had won {titles} titles '.format(player = 'Roger Federer',country = 'Legend',titles = 20))

# Dictionary arguments
print(' *** Tennis player {player} From {country} had won {titles} titles '.format(player = 'Roger Federer',country = 'Legend',titles = 20))

# alignment left '<' (default)
print(' *** Tennis player {} From {:<5s} had won {:<5d} titles '.format(player,country,titles))

# alignment left '<' (default)
print(' *** Tennis player {} From {:<5s} had won {:<5d} titles '.format(player,country,titles))

# alignment center '^'
print(' *** Tennis player {} From {:^10s} had won {:^10d} titles '.format(player,country,titles))

# alignment right '>'
print(' *** Tennis player {} From {:>10s} had won {:>10d} titles '.format(player,country,titles))


出力

Roger_Federer
*** Tennis player Roger_Federer From Legend had won 20 titles
*** Tennis player Roger_Federer From Legend had won 20 titles
*** Tennis player Roger Federer From Legend had won 20 titles
*** Tennis player Roger Federer From Legend had won 20 titles
*** Tennis player Roger_Federer From Legend had won 20 titles
*** Tennis player Roger_Federer From Legend had won 20 titles
*** Tennis player Roger_Federer From Legend had won 20 titles
*** Tennis player Roger_Federer From Legend had won 20 titles

最新スタイルの文字列と整数の補間:f-文字列

f-stringsはPython3.6で登場し、すぐに文字列をフォーマットするための推奨される方法になりました。個人的には、この形式を使用します。f文字列を作成するには:

1.開始引用符/最初の引用符の前に文字f/Fを使用します。
2.変数名または式を中括弧({})で囲んで、それらの値を文字列に入れます。

player = 'Roger_Federer'
country = 'Legend'
titles = 20

print(f"Output \n *** Tennis player {player} From {country} had won {titles} titles ")
print(f" *** I hope {player} wins another {titles - 10} titles ")
print(f" {'*' * 3} Tennis player {player.upper()} From {country:.^10} had won {titles} titles")

出力

*** Tennis player Roger_Federer From Legend had won 20 titles
*** I hope Roger_Federer wins another 10 titles
*** Tennis player ROGER_FEDERER From ..Legend.. had won 20 titles

基本を説明したので、リアルタイムの問題と、フォーマットされた文字列の使用を開始することをお勧めする理由について説明します。

titles = [
('federer', 20),
('nadal', 20),
('djokovic', 17),
]
print('Output\n')
for i, (player, titles) in enumerate(titles):
print('#%d: %-10s = %d' % (
i + 1,
player.title(),
round(titles)))

出力

#0: federer = 20
#1: nadal = 20
#2: djokovic = 17

明らかに、レポーターを上位に送る場合、インデックスが0から始まるのを見たくない場合は、1から始めたいと考えていました。ロジャーフェデラーはテニスの伝説であり、私は個人的に彼を#0ではなく#1として表現したいと思いました。

次に、その変更を行うために、古い形式を使用しているときにコードの読み取り可能性がどのように変化するかを確認します。

titles = [
('federer', 20),
('nadal', 20),
('djokovic', 17),
]
print('Output\n')
for i, (player, titles) in enumerate(titles):
print('#%d: %-10s = %d' % (
i + 1,
player.title(),
round(titles)))

出力

#1: Federer = 20
#2: Nadal = 20
#3: Djokovic = 17

結論として、f文字列の管理がより簡単である理由を示す例を示しました。

old_school_formatting = (
' Tennis Legeng is %(player)s, '
' %(player)s had won %(titles)s titles, '
'and he is from the country %(country)s.')
old_formatted = old_school_formatting % {
'player': 'Roger Federer',
'titles': 20,
'country': 'Swiss',
}
print('Output\n' + old_formatted)

出力

Tennis Legeng is Roger Federer, Roger Federer had won 20 titles, and he is from the country Swiss.


new_formatting = (
' Tennis Legeng is {player}, '
' {player} had won {titles} titles, '
'and he is from the country {country}')
new_formatted = new_formatting.format(
player= 'Roger Federer',
titles= 20,
country= 'Swiss',
)
print('Output\n' + new_formatted)

出力

Tennis Legeng is Roger Federer, Roger Federer had won 20 titles, and he is from the country Swiss

このスタイルは、辞書の一部の引用符を削除するため、ノイズが少し少なくなります。 フォーマット指定子にはかなりの数の文字が含まれていますが、説得力はほとんどありません。


  1. Pythonでウィキペディアのデータを抽出する方法は?

    この記事では、Pythonを使用してウィキペディアのデータを抽出する方法を説明します。 Pythonは、ウェブサイトからメタ情報を取得するためのウェブスクレイパーの作成に広く使用されています。 この記事では、ウィキペディアAPIとライブラリを使用して、ウィキペディアのソースURLからデータを取得します。 APIは、指定されたURLからデータをフェッチするのに役立ちます。次に、指定されたURLでメソッドを呼び出し、画面に情報を出力します。 ウィキペディアからデータを抽出するには、最初にウィキペディアライブラリをインポートする必要があります。 Pythonで「pipinstallwikiped

  2. Pythonでチャートに凡例を追加する方法は?

    はじめに... グラフの主な目的は、データを簡単に理解できるようにすることです。 「絵は千の言葉に値する」とは、言葉では表現できない複雑なアイデアを1つの画像/グラフで伝えることができることを意味します。 多くの情報を含むグラフを描画する場合、表示されるデータの理解を深めるために、凡例が関連情報を表示するのに役立つ場合があります。 その方法.. matplotlibでは、凡例を複数の方法で表示できます。特定のポイントに注意を引くための注釈は、読者がグラフに表示される情報を理解するのに役立ちます。 1. pythonコマンドプロンプトを開き、pip install matplotlibを