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


86

나는 국내 프로젝트를 위해 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를 존중하지 않는다고 생각하는데, 문자열을 올바르게 가져오고 코드를 준수하는 방법이 있습니까?


1
아니면 그냥 모두 함께 그 규칙을 줄 문자 제한을 늘리거나 무시하도록 IDE를 말해
Joran 비즐리

21
나는 그것의 속임수를 느끼지 않는다 .. f현은 거기에서 논의되지 않는다.
Ma0

3
@JoshLee "E122 연속 줄에 들여 쓰기 누락 또는내어 쓰기 메인"도 질문을 닫은 이유는 무엇입니까? 중복이 없습니다. 여러 줄 f- 문자열에 대한 유일한 것
Owlzy

2
@Owlzy 대답이 똑같지 않습니까? 줄 연속 마커가 아니라 괄호를 사용합니까?
Nick T

8
연결된 '복제'가이 질문의 속임수가 아니기 때문에이 질문은 속임수로 닫혀서는 안됩니다. Stackoverflow 파워 유저는 우리가 이와 같이 너무 공격적인 것에 대해 문제가 있다는 것을 알고 있습니다. 다시 열어보세요. 최대한 빨리 재개 표 투표.
Urda

답변:


97

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

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

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

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

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


40

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

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

이제이 닫혀 있음을 사람들이 내가해야한다고 생각한다면 나는이 대답을 삭제할 수 있습니다 ...하지만이 속는 응답에 포함되지 : / \
Joran 비즐리

8
그러나 여러 줄의이 종류는,이 트리플 인용 문자열의 오른쪽에 사용처럼 F-문자열 및 들여 쓰기의 목적은 또한 내가 느끼는 해달라고 패배 해킹 같은 느낌
Owlzy

2
이 답변은 OP의 의도를 복제하지만 @noddy의 답변이 더 낫다고 생각합니다. 이 답변은 단지 발생하는 영업 이익도 출력에 여러 줄을 원했기 때문에 정확합니다. 출력이 소스 코드와 다른 레이아웃을 갖기를 원하면 삼중 따옴표는 사용할 수 없습니다.
Mike Williamson

10

삼중 작은 따옴표 또는 삼중 큰 따옴표를 사용할 수 있지만 문자열 시작 부분에 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"을 사용할 필요가 없습니다.


8

@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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.