wythonにいくつかの関数を実装 [wython]
前回、まだwythonに不足している機能をいくつかピックアップしたが、今日は、その大部分を実装した。まずはサンプルを挙げよう。
コマンドラインの引数の1番目を文字列型変数file_nameに代入する。 ファイル名file_nameを読み込み用にオープンし、input_fileに代入する。 コマンドライン引数の2番目をfile_nameに代入する。 ファイル名file_nameを書き込み用にオープンし、output_fileに代入する。 ファイルinput_fileから一行ずつ文字列変数lineに読み込みながら、 lineの中で「検索」を検索し、その結果をpos1に代入する。 lineの中で「置換」を検索し、その結果をpos2に代入する。 もし、pos1が0以上、あるいは、pos2が0以上ならば、 lineを改行せずに表示する。 lineの中の「、」を「,」に置換して、その結果をlineに代入する。 lineの中の「。」を「.」に置換して、その結果をlineに代入する。 ファイルoutput_fileにlineを書き込む。 ファイルinput_fileをクローズする。 ファイルoutput_fileをクローズする。
これをwythonで変換すると、
#!/usr/bin/env python # -*- coding:euc-jp -*- import sys file_name = sys.argv[1] input_file = open(file_name) file_name = sys.argv[2] output_file = open(file_name, "w") for line in input_file: pos1 = line.find("検索" ) pos2 = line.find("置換" ) if pos1 >= 0 or pos2 >= 0: print line, line = line.replace("、" , "," ) line = line.replace("。" , "." ) output_file.write(line) input_file.close() output_file.close()
となる。画面に書き出される結果は、
lineの中で「検索」を検索し、その結果をpos1に代入する。 lineの中で「置換」を検索し、その結果をpos2に代入する。 lineの中の「、」を「,」に置換して、その結果をlineに代入する。 lineの中の「。」を「.」に置換して、その結果をlineに代入する。
となり、コマンドラインの第二引数に指定したファイルに、「、」を「,」、「。」を「.」に置換したテキストが書き出される。
言語仕様は前回のままだが、念のため、ここで今日実装できた分をまとめておこう。
- コマンドラインの引数はsys.argvに置換される。そのリストの何番目の引数かは、既に実装してあるリストの項目を指定する機能が使われる。
- 「〜を読み込み用にオープンし、〜に代入する。」および、「〜を書き込み用にオープンし、〜に代入する。」で、ファイル名からファイルをオープンし、そのファイルオブジェクトを変数に代入する。
- 「ファイル〜をクローズする。」で、ファイルオブジェクトを閉じる。
- for文を使ったファイルからの読み込みは、通常のfor文の処理で十分である。
- 「〜の中で〜を〜に置換して、その結果を〜に代入する。」で、最初の文字列の中で置換する。
- 「〜の中で〜を検索し、その結果を〜に代入する。」では、同様に最初の文字列の中で検索し、見つかったときの位置を変数に代入する。
- 「ファイル〜に〜を書き込む。」で、ファイルに文字列を書き出す。
コメント 0