본문 바로가기

IT/파이썬 Python

[파이썬] 텍스트 파일에서 원하지 않는 개행문자 (newline) 삭제하기

반응형

 

 

인터넷 등에서 내려받은 텍스트 파일을 아마존 킨들같은 e-book리더나, 태블릿 PC에서 볼 때 원치않는 개행문자때문에 엉뚱한 곳에서 행이 나뉘는 경우가 많습니다. 예를 들면 , 스캔해서 OCR로 인식한 문서들의 경우 특정 길이에서 무조건 다음 행으로 넘어가는데 이것이 우리가 보는 ebook리더의 화면 넓이와 맞이 않아서 보기가 좋지 않게 되는 거죠.

 

Calibre 같은 툴을 쓰면 형식변환 뿐 아니라 이런 작업을 해 주기도 하는데, 아무래도 로직을 마음대로 만질 수가 없어서 제가 간단한 파이썬 스크립트를 만들어 보았습니다.

간단한 스크립트이므로 필요에 따라 로직을 얼마든지 수정할 수 있습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys
 
fr=open(sys.argv[1], 'r'
fw=open(sys.argv[2], 'w')
 
while True:
    r_line = fr.readline()
    
    if not r_line: break
    
    # remove newline unless following 3 conditions :
    # 1. length is shorter than 15
    # 2. last 2 characters are '.\n' (. + newline)
    # 3. last 2 characters are '"\n'
    if len(r_line) > 15 and r_line[-2:] != '.\n' and r_line[-2:] != '"\n':
        outline=r_line[:-1]+' '
    else: outline = r_line
    fw.write(outline)
 
fr.close()
fw.close()
cs

 

주석 부분에 있는 3가지 조건에 해당하지 않으면 무조건 문장의 끝에 있는 개행문자 (newline character) 를 삭제합니다. 조건은

  1. 문장의 글자수가 15보다 짧거나,
  2. 문장의 마지막이 . (마침표) 와 개행문자로 되어 있거나,
  3. 문장의 마지막이 " (따옴표) 와 개행문자로 되어 있는 경우

입니다. 사용하시는 분들이 필요한 조건에 따라 간단히 수정하실 수 있으시겠죠?

위 스크립트는 파이썬의 강력한 텍스트 관련 기능을 사용해서 매우 쉽게 쓰여졌습니다.

반응형