2017-12-06 6 views
0

現在、提供されている.txtファイルを検索して数値、カンマ、および特定の単語を削除するPythonプログラムを作成しています。これは、通話の転記に使用するため、これらは不要な「um」や「え」のような言葉です。これは、削除されたデータ以外のすべてを含む新しいテキストファイルに書き戻されます。.txtファイルから単語全体を削除しますが、その単語がサブ文字列として表示されない場合

私が作成したコードは動作しますが、それらを含む長い単語からも単語が削除されます。たとえば、「勢い」は「um」を含む「瞬間」になります。コードは次のとおりです。

infile = "testfile.txt" 
outfile = "cleanedfile.txt" 
numbers = [1,2,3,4,5,6,7,8,9] 
deleteList = [",", "Um", "um", "Uh", "uh", str(numbers)] 
fin = open(infile) 
fout = open(outfile, 'w+') 
for line in fin: 
    for word in deleteList: 
     line = line.replace(word, "") 
    fout.write(line) 
fin.close() 
fout.close() 

ご協力いただければ幸いです。

+0

ここでは、 'line.replace'の代わりにregexを使いたいと思っています。 'um 'はスペースで囲まれているため、正規表現' um'は個々の単語にのみ一致します。 [documentation](https://docs.python.org/3/howto/regex.html)に、その方法を説明する必要があります。 – MCBama

+0

単語の前後にスペースや開始/終了をチェックしていますか? '' Um ''の代わりに' 'Um" 'をチェックするのと同じですか?正規表現もあります。これは、行の始まりが直前に来るか、行の終わりが単語の直後に来るかどうかを調べることができます。なぜなら、それらの場合には一致するスペースがないからです。 –

+0

また、句読点の直後にある単語を取り除きたいですか? 「これは私のものです」「句読点も」「これは私のものです」「? –

答えて

1

私はこのように見えるようにコードを変更し、正規表現を使用して、それを解決してきました。彼らの助けのための

import re 

for line in fin: 
    line = re.sub(r"\b(U|u)(m|h)\b", "", line) 
    fout.write(line) 

おかげで皆を。

関連する問題