2017-10-08 2 views
1

텍스트 파일의 내용을 배열/목록으로 읽는 파이썬 프로그램을 작성하고 있지만 텍스트 파일에서 구두점을 삭제하는 데 문제가 있습니다. 여기에 내가 무엇을 시도했다입니다 : 내가 문자를 제거 부분에서 텍스트 파일을 읽을 때 구두점 제거하기 [파이썬]

def read_file(self,filename): 
    name_file = filename 
    filename = open(name_file, 'r') 
    file = filename 
    punctuations = '''!()-[]{};:'"\,<>./[email protected]#$%^&*_~''' 
    no_punct = "" 
    lst = [] 
    for word in file: 
     word = word.strip('\n') 
     for char in punctuations: 
      word = word.strip(char) 
     lst.append(word) 


    filename.close() 

, 난 워드 파일의 내용의 순서는 변경 것으로 나타났습니다 일부 구두점은 완전히 제거되지 않습니다.

'replace'메서드를 사용하면 잘 작동하지만 replace 함수를 사용하지 않는 메서드를 찾고 있습니다.

+0

바꾸기를 사용하지 않는 이유는 무엇입니까? 가장 쉬울 것입니다 – Worm

+0

이 함수를 호출하는 라인을 추가 할 수 있습니까? – Worm

+0

입력 텍스트 파일의 형식은 무엇입니까? 예 : 텍스트 파일에 각 줄마다 새로운 단어가 있거나 모든 텍스트 블록입니까? – Worm

답변

2

일부 구두점을 제거하는 데 기여한 것으로 보인 것들이 있습니다. 줄 for word in file:은 실제로 for line in file:이어야합니다. 파이썬은 단어가 아닌 라인 단위로 파일을 반복합니다. strip 함수는 처음부터 끝까지 항목 만 제거합니다. replace 함수를 사용하여 가운데에서 문자를 제거 할 수 있습니다. 프로그램이 현재 작성된 방식으로 문서의 각 줄의 시작과 끝에서 구두점 만 제거합니다.

모든 구두점을 제거하는 방법은 이와 같습니다.

from pathlib import Path 
import string 

filepath = Path(filename) 
text = filepath.read_text() 
text = text.replace(string.punctuation, "") 
filepath.write_text(text) 

하지만 바꾸기 기능이 전자 책 기능으로 엉망이라고 말하면됩니다. 좀 더 자세히 설명해 주시겠습니까? 개별 단어 내의 구두점을 바꾸는 것이 전체 파일에 대해 어떻게 바뀌는 지 어떻게 보지 않습니까?

관련 문제