#動機
自然言語処理を勉強する中で単語リストのテキストファイルを生成したのですが、サイズが大きく中身を確認するのが大変だったので、自分が適当に選んだ単語が単語リストの中に入っているか、を確認できるようにしてみたかった。
#コマンドライン引数をリストとして取得する
Yukun's Blogのこちらの記事を参考にさせていただきました。
sysモジュールのargv属性にコマンドライン引数が格納されるようです。
contain_or_not.py
import sys
r0 = open('vocab.txt','r') #読み込みモードでファイルを開く
vocab = r0.readlines() #vocab.txtには改行区切りで単語が入っている
r0.close()
argvs = sys.argv
words = argvs[1:] #argvs[0]は実行時のファイル名が入っている
for word in words:
if word in vocab:
print(word + ' is in vocab.')
else:
print(word + ' is not in vocab.')
自分だけが使うので特にエラー処理などは考えていませんでしたが、単語が入力されなかった場合にエラーが出るようにした方がユーザーフレンドリーなのでしょうか。
#問題点:vocabの各要素に改行記号が含まれてしまった
vocab.txtに明らかに含まれている単語を入力しても、not in vocabと出力されてしまった。どうやら改行記号が悪さしている模様。
人間が見る時は改行区切りの方が易しいのですが、ファイルは下手に改行区切りにしないようが良いのでしょうか。
次の投稿で、vocabの各要素から改行記号を除く方法を書いてみます。
書きました。修正版のスクリプトもこちらです。
pythonメモ:map -リストの各要素に同じ処理を施す