Python/Utils

2칸 들여쓰기 양식 파이썬 코드를 4칸 양식으로 바꾸기(역방향 포함)

jimmy_AI 2022. 4. 11. 20:23
반응형

Indentation 2칸 <-> 4칸 형식 변환 방법

파이썬에서 코드를 구분하는 들여쓰기 형식은 2칸 작성법과 4칸 작성법으로 나뉘는데,

협업의 과정에서 이 기준을 한 가지로 통일해야하는 경우가 많습니다.

 

따라서, 이번 시간에는 2칸 Indentation으로 작성된 코드를 4칸 들여쓰기 양식으로 변경하거나

반대로 4칸 Indentation에서 2칸 들여쓰기로 쉽게 바꿀 수 있는 방법을 다루어 보겠습니다.

 

 

from 들여쓰기 2칸 양식 to 4칸 양식

예를 들어, 아래와 같이 2칸 Indentation으로 작성된 코드가 있다고 가정해보도록 하겠습니다.

for i in range(10):
  if i > 5:
    if i % 2 == 0:
      print("5보다 큰 짝수 입니다.")
    else:
      print("5보다 큰 홀수 입니다.")
  else:
    if i % 2 == 0:
      print("5보다 크지 않은 짝수 입니다.")
    else:
      print("5보다 크지 않은 홀수 입니다.")

이제 위 코드를 4칸 들여쓰기 양식으로 바꾸는 방법의 순서에 대해서 설명하겠습니다.

 

Step 1. 코드를 문자열 양식으로 변경

먼저, 코드 전체를 3중 따옴표(""" 혹은 ''')로 감싸서 문자열 양식으로 변환해줍니다.

code = """for i in range(10):
  if i > 5:
    if i % 2 == 0:
      print("5보다 큰 짝수 입니다.")
    else:
      print("5보다 큰 홀수 입니다.")
  else:
    if i % 2 == 0:
      print("5보다 크지 않은 짝수 입니다.")
    else:
      print("5보다 크지 않은 홀수 입니다.")"""
반응형

Step 2. 기존 들여쓰기 정도에 따라서 공백 추가

2칸 -> 4칸 양식 변경시, 기존 들여쓰기 공백 칸 수만큼 공백을 추가해야합니다.

이 방법은 줄바꿈(\n) 문자 이후의 공백 개수를 변경하는 원리로 쉽게 바꿀 수 있습니다.

 

이에 대한 상세한 실행법은 최대 들여쓰기 칸 수를 max_indent(넉넉하게 잡아도 무관합니다.)

에 지정해주시고, Step 1에서 문자열 변환 코드를 담은 변수 code에 대하여 아래 코드를

실행시키면 해당 변수에 들여쓰기 형식이 변경된 코드 문자열이 저장됩니다.

max_indent = 3

for i in range(max_indent):
    origin_indent = '\n' + ' ' * (i * 4 + 2)
    modify_indent = '\n' + ' ' * (i * 4 + 4)
    code = code.replace(origin_indent, modify_indent)
print(code)

# 변환 결과(2칸 -> 4칸 들여쓰기 형식)
for i in range(10):
    if i > 5:
        if i % 2 == 0:
            print("5보다 큰 짝수 입니다.")
        else:
            print("5보다 큰 홀수 입니다.")
    else:
        if i % 2 == 0:
            print("5보다 크지 않은 짝수 입니다.")
        else:
            print("5보다 크지 않은 홀수 입니다.")

 

 

from 들여쓰기 4칸 양식 to 2칸 양식

위와 비슷한 원리로 Indentation 4칸 기준으로 작성된 코드를 2칸 형식으로 변경하는 것도

쉽게 진행할 수 있습니다.

 

이번에는 반대로 줄바꿈 이후 공백이 원래 있던 횟수에서 절반만큼 공백 개수를 줄여야합니다.

마찬가지로 변경할 코드를 문자열로 지정하여 code 변수 내에 저장해두고,

아래 코드를 실행시켜주시면 4칸에서 2칸으로 들여쓰기 양식 변환이 완료됩니다.

max_indent = 3

for i in range(max_indent, 0, -1):
    origin_indent = '\n' + ' ' * (i * 4)
    modify_indent = '\n' + ' ' * (i * 4 - 2)
    code = code.replace(origin_indent, modify_indent)