[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