2017-09-18 1 views
0

나는 셰익스피어의 전체 작품 데이터를 here에서 가지고 있는데, 단어 생성 알고리즘에서 모델을 만들기 위해 사용하고 싶습니다. 모델의 요구 사항은 전체 텍스트가 하나의 공백 만 제공되고 다른 종류의 공백은 제공되지 않는다는 것입니다. 이것을 어떻게 할 수 있습니까? 단일 문자열에 대해이 작업을 수행하는 방법을 찾았지만 텍스트 파일에서는 작동하지 않습니다.여러 공백, 줄 바꿈 및 탭을 제거하고 텍스트 파일에 공백을 하나만 넣는 방법은 무엇입니까?

내 시도 (내가 파이썬의 매우 지식이 아니다) :

with open(file_path, 'r') as data: 
    for line in data: 
     cleanedline = line.strip('\n') 

cleanedline 나던가 인쇄 할 때, 그래서 다시 파일로 기록하지 않았다 제거 \n. \s+ 정규 표현식 패턴은 하나 개 이상의 공백 문자의 순서와 일치합니다

import re 

with open(file_path) as data: 
    text = re.sub(r'\s+', ' ', data.read()) 

:

+0

그래서, 모든 줄 바꿈 및 기타 공백이 하나의 공간을 대체를해야한다 :

정규식없이이 작업을 수행하는 또 다른 방법은 다음 join()split()을 사용하는 것입니다? – RomanPerekhrest

+0

예, [glove] (https://github.com/stanfordnlp/GloVe/blob/master/src/README.md) 모델 –

답변

1

당신은 정규 표현식을 시도 할 수 있습니다. re.sub()은 일치하는 텍스트를 단일 공백으로 대체합니다.

공백은 공백, 탭, 개행, 반환, 용지 공급, 세로 탭 등과 같은 문자로 구성됩니다. 구두점은 포함하지 않습니다.

with open(file_path) as data: 
    text = ' '.join(data.read().split()) 
+0

@leehuang : 저에게 효과적입니다. 오류가 무엇인지 또는 작동하지 않는 것은 무엇입니까? – mhawke

+0

고마워, 그것은 나를 위해 일했다, 나는 내 자신의 코드에서 실수를하고 있었다. –

관련 문제