Skip to content

Instantly share code, notes, and snippets.

@nattybear
Last active August 22, 2017 02:47
Show Gist options
  • Save nattybear/766e2081ed44c0e6a1ad158092940249 to your computer and use it in GitHub Desktop.
Save nattybear/766e2081ed44c0e6a1ad158092940249 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
#-*- coding: utf-8 -*-
# 파이썬 버전 2로 실행하는 것이 좋다.
from re import compile
from sys import argv
# RT 태그를 찾는 정규식
p1 = compile('<RT>.*?</RT>')
# 모든 태그를 찾는 정규식
p2 = compile('<.*?>')
# 모든 1개 이상의 개행을 찾는 정규식
p3 = compile('\n+')
# 문자열 '\n'을 찾는 정규식
p4 = compile(r'\\n')
# 인자로 입력한 파일 이름을 이름과 확장자를 구분하여 저장
name, ext = argv[1].split('.')
# 인자로 입력한 파일을 바이너리 읽기 모드로 연다.
# 이 부분 때문에 파이썬 버전 2로 실행하는 것을 권장
# 파일 포인터를 열고 파일의 내용을 b 변수에 저장하고
# 파일 포인터를 다시 닫아준다.
f = open(argv[1], 'rb')
b = f.read()
f.close()
# 치환하는 순서가 중요하다.
# RT 태그를 먼저 지워주지 않으면
# 다른 태그를 지울 때 RT 태그가 없어지기 때문에
# RT 태그의 내용을 지울 수가 없다.
b = p1.sub('', b)
b = p2.sub('', b)
# 개행은 동일한 작업을 여러번 작성하는 것은
# 프로그래밍적인 사고 방식이 아니다.
# 기본적으로 프로그래밍은 사람이 하기 귀찮은
# 반복적인 일을 최대한 단순화 해주는 것이 목표이다.
# 따라서 정규식을 이용해서 개행이 1번 이상 겹쳐 있는 것을
# 모두 찾아서 개행 한개로 바꿔주기만 하면
# 단 한줄로 처리 할 수 있다.
b = p3.sub('\n', b)
# 문자열 '\n'을 찾아서 실제 개행으로 변환한다.
b = p4.sub('\n', b)
# 작업이 모두 끝났다.
# 파일 이름에 구분 할 수 있는 문자열을 추가하고
# 확장자는 보존한다.
# 변환한 내용을 새 파일에 저장하고 파일 포인터를 닫는다.
f = open(name + '_removed.' + ext, 'wb')
f.write(b)
f.close()
# 정상적으로 완료되었다는 사실을 사용자에게 안내한다.
print('[*] Removing completed!')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment