[Python] 코딩 도장 - 탭을 공백 문자로 바꾸기

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: 탭을 공백 문자로 바꾸기] - Lv.1

A씨는 개발된 소스코드를 특정업체에 납품하려고 한다.

개발된 소스코드들은 탭으로 들여쓰기가 된것, 공백으로 들여쓰기가 된 것들이 섞여 있다고 한다.

A씨는 탭으로 들여쓰기가 된 모든 소스를 공백 4개로 수정한 후 납품할 예정이다.

A씨를 도와줄 수 있도록 소스코드내에 사용된 탭(Tab) 문자를 공백 4개(4 space)로 바꾸어 주는 프로그램을 작성하시오.

출처: https://codingdojang.com/scode/405?answer_mode=hide


[풀이]

import os

# 특정 경로의 전체 파일 확인 (r string 사용)
path = r"C:\Users\ekzm3\Desktop\Github_kkd\새 폴더"
file_list = os.listdir(path)

print(file_list)

# 예시로 txt 파일만 사용
txt_file = [file for file in file_list if file.endswith(".txt")]

# 탭을 공백으로 바꾸기
for file_name in txt_file:
    # 원본 파일을 불러와 탭을 공백으로 바꾸기
    with open(f"{path}\{file_name}", "r", encoding="utf-8") as data:
        old_file = data.read()
        new_file = old_file.replace("\t", "    ")
        
    # 공백으로 바꾼 파일로 덮어 씌우기
    with open(f"{path}\{file_name}", "w", encoding="utf-8") as new_data:
        new_data.write(new_file)
        
print(old_file)
print("-"*30)
print(new_file)
['임시 텍스트 파일.txt']
가	나	다
라		마
바 사 아
자	차	카 타
------------------------------
가    나    다
라        마
바 사 아
자    차    카 타

우선 os.listdir()로 특정 경로에 있는 모든 파일명 리스트를 생성하였다.

그 중에서 예시로 텍스트 파일만을 가진 리스트를 한 줄 for문으로 생성하였다.

데이터를 불러온 후 replace로 탭을 공백 4개로 바꾸고 다시 원본 파일명으로 덮어씌웠다.


[추천 풀이]

filename=input("Enter your file name : ")
tempfile=open(filename)
tempfile=tempfile.read()
temp_str=tempfile.replace("\t","    ")
tempfile=open(filename,'w')
tempfile.write(temp_str)
tempfile.close()

다른 분들이 풀이한 내용 중 추천 수가 많은 풀이이다.

input으로 직접 파일을 지정하는 것 외엔 비슷하게 풀이하였다.

풀이를 보면 경로나 확장자까지 고려해서 함수로 만든 분도 있고 문제에서 정확헤게 지정된 것이 없어 다양하다.

Leave a comment