[解決済み] Python 3.6でf-stringで改行を使用して出力をフォーマットする方法は?
質問
このケースをf-stringを使ってPythonicな方法でフォーマットする方法を知りたいです。
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
問題は、その
'\'
の内部で使用することはできません。
{...}
の表現部分と同じです。
期待される出力
Winners are:
Adam
Bob
Cyril
解決方法は?
できません。中括弧の中にバックスラッシュを入れることはできません
{}
その結果
SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
で指定されています。 PEP をf-stringに変換します。
f-stringの式部分の中にバックスラッシュを入れることはできません[...]。
一つの方法として
'\n'
を名前に追加し
.join
の中で、その上に
f
-の文字列を、つまりリテラルを使用せずに作成します。
names = ['Adam', 'Bob', 'Cyril']
nl = '\n'
text = f"Winners are:{nl}{nl.join(names)}"
print(text)
結果が出る。
Winners are:
Adam
Bob
Cyril
もう一つの選択肢は、@wim が指定したように
chr(10)
を取得するために
\n
が返され、そこに結合します。
f"Winners are:\n{chr(10).join(names)}"
さらにもうひとつは、もちろん
'\n'.join
をあらかじめ入れておき、それに合わせて名前を付けます。
n = "\n".join(names)
text = f"Winners are:\n{n}"
となり、同じ出力になります。
注
との細かな違いの一つです。
f
-文字列と
str.format
. 後者では、それらのキーを含む対応する wacky dict が解凍されることを条件に、常に句読点を使用することができます。
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
<サブ (こんなことしないでください)
前者では、句読点を使った識別子を持つことができないので、句読点は許されない。
余談:私なら絶対選ぶのは
print
または
format
他の回答が示唆しているように、代替案として。私が挙げた選択肢は、以下の場合にのみ適用されます。
しなければならない
は、何らかの理由でf-stringを使用しています。
新しいものだからといって、何でもかんでもそれでやろうというわけではありません ;-)
関連
-
Python 入出力と高次代入の基礎知識
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] 改行やスペースを入れずに印刷する方法
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] 文字列フォーマット:% vs. .format vs. f-stringリテラル
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonによるjieba分割ライブラリ
-
任意波形を生成してtxtで保存するためのPython実装
-
Pythonショートビデオクローラーチュートリアル
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] os.lineepは何のためにあるのですか?