Ich versuche, PEP-8-kompatiblen Code für ein inländisches Projekt zu schreiben (ich muss zugeben, dass dies meine ersten Schritte in der Python-Welt sind), und ich habe einen F-String, der mehr als 80 Zeichen lang ist
- Die durchgezogene dünne Linie in der Nähe des Punktes bei self.text ist die 80-Zeichen-Marke. (Entschuldigung für den traurigen Link ohne Vorschau, aber ich muss mehr als 10 Mitarbeiter haben, um sie zu posten)
Ich versuche es auf pythonischste Weise in verschiedene Zeilen aufzuteilen , aber die einzige Antwort, die tatsächlich funktioniert, ist ein Fehler für meinen Linter
Arbeitscode:
def __str__(self):
return f'{self.date} - {self.time},\nTags:' + \
f' {self.tags},\nText: {self.text}'
Ausgabe:
2017-08-30 - 17:58:08.307055,
Tags: test tag,
Text: test text
Der Linter glaubt, dass ich E122 von PEP-8 nicht respektiere. Gibt es eine Möglichkeit, die Zeichenfolge richtig und den Code konform zu machen?
quelle
f
Saiten werden dort nicht diskutiert.Antworten:
Aus dem Style Guide für Python-Code :
In Anbetracht dessen würde das Folgende Ihr Problem auf eine PEP-8-konforme Weise lösen.
return ( f'{self.date} - {self.time}\n' f'Tags: {self.tags}\n' f'Text: {self.text}' )
Python-Zeichenfolgen werden automatisch verkettet, wenn sie nicht durch ein Komma getrennt sind, sodass Sie nicht explizit aufrufen müssen
join()
.quelle
Ich denke es wäre
return f'''{self.date} - {self.time}, Tags: {self.tags}, Text: {self.text}'''
quelle
Sie können entweder dreifache einfache Anführungszeichen oder dreifache doppelte Anführungszeichen verwenden, aber am Anfang der Zeichenfolge ein f einfügen:
Dreifache einfache Anführungszeichen
return f'''{self.date} - {self.time}, Tags:' {self.tags}, Text: {self.text}'''
Dreifache doppelte Anführungszeichen
return f"""{self.date} - {self.time}, Tags:' {self.tags}, Text: {self.text}"""
Beachten Sie, dass Sie "\ n" nicht verwenden müssen, da Sie eine mehrzeilige Zeichenfolge verwenden.
quelle
Wie von @noddy erwähnt, funktioniert der Ansatz auch für den Ausdruck der Variablenzuweisung:
var1 = "foo" var2 = "bar" concat_var = (f"First var is: {var1}" f" and in same line Second var is: {var2}") print(concat_var)
sollte dir geben:
First var is: foo and in same line Second var is: bar
quelle