2017-10-08 40 views
1

テキストファイルの内容を配列/リストに読み込むPythonプログラムを作成していますが、テキストファイルから句読点を削除する際に問題があります。ここで私が試したものです:私は文字を取り除く部分でテキストファイルを読むときに句読点を削除する[python]

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:である必要があります。 Pythonは単語単位ではなく行単位でファイルを繰り返します。 strip関数は、項目の先頭と末尾のみを削除します。文字を中央から削除するには、replace関数を使用します。プログラムが現在書かれている方法では、文書内の各行の先頭と末尾の句読点のみが削除されます。

すべての句読点を削除する方法はそうです。

from pathlib import Path 
import string 

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

しかし、あなたは、置換機能は電子ブックの機能と混同していると言います。あなたはこれ以上いくつか説明することができますか?個々の単語の中の句読点をどのように置き換えて、ファイル全体を一括して置き換えるかはわかりません。

関連する問題