web-dev-qa-db-ja.com

Pythonの複数行f文字列

私は国内プロジェクトのためにPEP-8準拠のコードを書こうとしています(python world)での最初のステップであることを認めなければなりません。 80文字以上

 -self.textのドットの近くの細い実線は80文字のマークです。 (プレビューなしの悲しいリンクは申し訳ありませんが、投稿するには10人以上の担当者が必要です)

私はそれを最も多くの別の行に分割しようとしていますPythonic方法ですが、実際に動作する唯一のaswerは私のリンターのエラーです

作業コード:

def __str__(self):
    return f'{self.date} - {self.time},\nTags:' + \
    f' {self.tags},\nText: {self.text}'

出力:

2017-08-30 - 17:58:08.307055,
Tags: test tag,
Text: test text

リンターは、私がPEP-8のE122を尊重していないと考えていますが、文字列を正しくし、コードを準拠させる方法はありますか?

36
Owlzy

から Python Code)のスタイルガイド

長い行を折り返す好ましい方法は、括弧、括弧、および中括弧内でPythonの暗黙の行継続を使用することです。

これを前提に、以下はPEP-8準拠の方法で問題を解決します。

_return (
    f'{self.date} - {self.time}\n'
    f'Tags: {self.tags}\n'
    f'Text: {self.text}'
)
_

Python文字列は、コンマで区切られていない場合は自動的に連結されるため、join()を明示的に呼び出す必要はありません。

20
noddy

そうなると思う

return f'''{self.date} - {self.time},
Tags: {self.tags},
Text: {self.text}'''
19
Joran Beasley

@noddyで述べたように、このアプローチは変数代入式にも機能します。

var1 = "foo"
var2 = "bar"
concat_var = (f"First var is: {var1}"
              f" and in same line Second var is: {var2}")
print(concat_var)

あなたに与える必要があります:

First var is: foo and in same line Second var is: bar
0
codarrior