f-string의 newline '\n'을 사용하여 Python 3.6에서 출력을 포맷하는 방법은 무엇입니까?
f-string을 사용하여 이 케이스를 피토닉 방식으로 포맷하는 방법을 알고 싶습니다.
names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
문제는 말이다'\'
내부에서는 사용할 수 없습니다.{...}
f-string의 표현 부분.예상 출력:
Winners are:
Adam
Bob
Cyril
그럴수는 없어요.백슬래시는 중괄호 안쪽에 표시할 수 없습니다.{}
; 그렇게 하면,SyntaxError
:
>>> f'{\}'
SyntaxError: f-string expression part cannot include a backslash
이것은 F스트링의 PEP로 지정되어 있습니다.
백슬래시는 f-string의 표현식 부분 안에 나타나지 않을 수 있습니다. [...]
한 가지 옵션은 할당입니다.'\n'
이름만 대면해서.join
안에 있는 그것에 대해서f
string. 즉, 리터럴을 사용하지 않는 경우:
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
후자의 경우, 대응하는 wicky dict가 이러한 키를 포함한 압축 해제된 경우 언제든지 구두점을 사용할 수 있습니다.
>>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'})
"Hello World!"
(제발 이러지 마세요)
앞에서는 구두점을 사용하는 식별자를 가질 수 없기 때문에 구두점을 사용할 수 없습니다.
제쳐두고: 저는 반드시print
또는format
다른 답변이 대안으로 제시하듯이.제가 제시한 옵션은 어떤 이유로든 f-string을 사용해야 하는 경우에만 적용됩니다.
뭔가 새로운 것이 있다고 해서, 그것으로 모든 것을 할 수 있는 것은 아닙니다.
구분자가 있는 문자열 목록을 인쇄하기 위해 f-string이나 다른 포맷터가 필요하지 않습니다.를 사용합니다.sep
키워드 인수를 지정합니다.
names = ['Adam', 'Bob', 'Cyril']
print('Winners are:', *names, sep='\n')
출력:
Winners are:
Adam
Bob
Cyril
즉, / str.format()
를 사용하는 것은 f-string 회피책보다 간단하고 읽기 쉬울 것입니다.
print('\n'.join(['Winners are:', *names]))
print('Winners are:\n{}'.format('\n'.join(names)))
다른 사람이 말한 것처럼 f-string에서 백슬래시를 사용할 수는 없지만, 이를 사용하여 회피할 수 있습니다(단, 이것은 그렇지 않습니다).\n
모든 플랫폼에서 바이너리 파일을 읽거나 쓰지 않는 한 권장되지 않습니다. Rick의 의견을 참조하십시오.
>>> import os
>>> names = ['Adam', 'Bob', 'Cyril']
>>> print(f"Winners are:\n{os.linesep.join(names)}")
Winners are:
Adam
Bob
Cyril
또는 읽기 어렵지만, 확실하게 읽을 수 있는 방법으로\n
, 다음과 같이 설정합니다.
>>> print(f"Winners are:\n{chr(10).join(names)}")
Winners are:
Adam
Bob
Cyril
다른 답변은 줄바꿈 문자를 f-string 필드에 넣는 방법에 대한 아이디어를 제공합니다.단, OP가 제시한 예(OP의 실제 사용 사례를 나타내거나 나타내지 않을 수 있음)에 대해서는 이러한 아이디어를 실제로 사용해서는 안 된다고 생각합니다.
은 코드입니다.f-string은 코드 가독성을 높이는 것입니다.할수.format
이것에 대해서, 보다 알기 쉬운 것이 없는지를 주의 깊게 검토해 주세요(가능한 경우).
f"Winners are:\n{'\n'.join(names)}"
...혹은 이것:
newline = '\n'
f"Winners are:\n{newline.join(names)}"
...혹은 이것:
"Winners are:\n{chr(10).join(names)}"
vs. 이것:
"Winners are:\n{}".format('\n'.join(names))
마지막 방법은 적어도 그 이상까지는 읽을 수 있다.
요컨대, 반짝이는 새 드라이버가 있다고 해서 스크류 드라이버가 필요할 때 망치를 사용하지 마세요.코드는 쓰여진 것보다 훨씬 더 자주 읽힌다.
다른 사례의 '있다', '어느', '어느', '어느 정도'가 수 .chr(10)
또는 ideanewline
아이디어가 적절할 수 있습니다.하지만 주어진 건 아니야.
print(f'{"blah\n"}')
상기의 진술은 제기될 것이다.SyntaxError
이 하려면 \포함하는
x = "blah\n"
print(f'{x}')
가독성이 최우선이고 속도가 실제로 요인이 아닌 경우 f-string은 간단한 프로그래밍 방법이 있더라도 간단한 함수 자체 문서화를 만드는 데 매우 유용합니다.f-string을 통해 가독성을 극대화한다. (1) 인수 상태를 변경하는 문장이 명확하고 (2) 인수를 인쇄할 때 인쇄 문장이 신중하게 포맷되어 시각적으로 표현되어 주장을 두드러지게 한다.
'''
function to print out an identification header, consisting
of the programmer supplied title, lastname, and firstname:
'''
FORMAT_DATE = "%m-%d-%y %H:%M:%S"
date_and_time = datetime.now()
name_line = f"* {lastname}, {firstname}"
title_line = f"* {title}"
date_line = f"* {date_and_time.strftime(FORMAT_DATE)}"
print(name_line
+ '\n'
+ title_line
+ '\n'
+ date_line)
출력:
* Lovelace, Ada
* Bernoulli Numbers algorithm implemented in Python
* 10-28-42 20:13:22
언급URL : https://stackoverflow.com/questions/44780357/how-to-use-newline-n-in-f-string-to-format-output-in-python-3-6
'sourcecode' 카테고리의 다른 글
JSON 데이터를 파일에 쓰려면 어떻게 해야 하나요? (0) | 2022.09.23 |
---|---|
JVM이 사용하고 있는 키스토어를 확인하려면 어떻게 해야 합니까? (0) | 2022.09.23 |
MariaDB에서 MySQL로의 이행 (0) | 2022.09.23 |
SQL 구문에 오류가 있습니다. 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 참조하십시오. (0) | 2022.09.23 |
텍스트 입력 필드 내에서 커서 위치(문자 단위)를 가져옵니다. (0) | 2022.09.23 |