python에서 정말 긴 문자열을 여러 줄에 걸쳐서 표현할 수 있는 방법이 없을까요?

 


 가장 먼저 생각해 볼 수 있는 방법은, 배열로 만든 다음에 "".join으로 연결해 버리는 것입니다.

 

 위 예제를 보겠습니다. 문자열을 이루는 문자열들을 str_set에다가 모아 놓았습니다. 다음에 "".join으로 str_set에 있는 문자열들을 모두 join해서 출력하게 됩니다. 출력 결과를 보겠습니다.

 

 abcdef가 나오는군요.

 

 그런데, (로 감쌀 수도 있습니다.위와 같이 입력해 봅시다.

 

 

 그래도 똑같이 나옵니다. 긴 문자열도 2가지 방법으로 깔끔하게 정돈할 수 있습니다. 당연하게도 이 방법을 응용하면 여러 줄로 이루어진 문자열도 깔끔하게 선언할 수 있습니다.

 

 

 (를 이용한 방식을 봅시다. 뒤에 "\n"을 붙여주었습니다.

 

 혹은, 문자열 배열을 선언하고 join을 사용하는 방법도 있습니다.

 

 실행 결과는 둘 다 1번째 줄에 abc, 2번째 줄에 def가 나옵니다.

 


 그런데 큰 따옴표를 3개 쓰는 방법으로도 할 수 있습니다. """으로 감싸주는 것입니다. docs string을 쓸 때 써먹곤 하는데요. 사실, 저는 docs를 작성할 때 말고 다른 용도로 사용하는 편이 조금 더 많습니다.

 

 먼저, """a"abc"bc"""를 보겠습니다. 문자열의 중간에 "이 들어갔어요. 물론 '로 시작해도 "을 넣을 순 있긴 합니다만, '나 "를 문자열 안에 넣기 위해서 """로 감싸기도 합니다.

 

 그런데 끝에는 "가 붙지 않습니다. 이럴 땐 어떻게 해야 할까요? 간단하게 공백을 뒤에 붙인 다음에 strip()으로 정리해 주면 됩니다.

 

 진짜로 여러 줄을 출력하려는 경우, 요렇게 쓸 수도 있습니다. 1번째 줄에 """로 문자열의 시작을 알렸습니다. 다음에, 2번째 줄에는 hello가, 3번째 줄에는 world가 나왔습니다. 여기까지 아직 """로 닫히지 않은 상태입니다. 그 다음에, 4번째 줄에 """가 나왔습니다. 4개의 줄이 s에 나온 것입니다.

 

 1번째 줄과 4번째 줄이 빈 줄, 2번째 줄과 3번째 줄에 각각 hello, world가 출력되었습니다. 그런데, 앞에 indent가 붙었습니다.

 

 이런 경우, textwrap에 있는 dedent를 이용하면 됩니다.

 

 그러면 앞에 공백이 붙은 것을 제거해 줍니다.

 

 f string은 잘 동작할까요? """ 앞에 f를 붙여서 f-string임을 명시해 줍니다. 그리고, {a} {b}와 같이 넣어주면, a의 값과 b의 값을 출력해 줍니다. a의 값이 3이고 b의 값이 5입니다. 어떻게 출력될까요?

 

 

 3:5가 출력됩니다.