[python] 파이썬의 여러 줄 f- 문자열

나는 국내 프로젝트를 위해 PEP-8 호환 코드를 작성하려고하는데 (파이썬 세계에서 첫 번째 단계임을 인정해야 함) 길이가 80 자 이상인 f- 문자열이 있습니다.

-self.text의 점 근처에있는 얇은 실선이 80 자 표시입니다. (미리보기가없는 슬픈 링크에 대해 죄송하지만 게시하려면 10 명 이상의 담당자가 있어야합니다)

나는 대부분의 다른 라인으로 분할하기 위해 노력하고있어 파이썬 방법 만이 실제로 작동 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

linter는 내가 PEP-8의 E122를 존중하지 않는다고 생각하는데, 문자열을 올바르게 가져오고 코드를 준수하는 방법이 있습니까?



답변

에서 파이썬 코드에 대한 스타일 가이드 :

긴 줄을 감싸는 가장 좋은 방법은 괄호, 대괄호 및 중괄호 안에 Python의 암시 적 줄 연속을 사용하는 것입니다.

이를 감안할 때 다음은 PEP-8 준수 방식으로 문제를 해결합니다.

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

Python 문자열은 쉼표로 구분되지 않을 때 자동으로 연결되므로 명시 적으로를 호출 할 필요가 없습니다 join().


답변

나는 그것이 될 것이라고 생각한다

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


답변

삼중 작은 따옴표 또는 삼중 큰 따옴표를 사용할 수 있지만 문자열 시작 부분에 f를 넣으십시오.

삼중 작은 따옴표

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

트리플 큰 따옴표

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

여러 줄 문자열을 사용하기 때문에 “\ n”을 사용할 필요가 없습니다.


답변

@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


답변