On Wed, 21 Jul 2004 23:16:50 +0900
"機械伯爵" <kikwai@...> さんwrote:
> Win版のPythonの最小コンポーネント(python.exeとpythonXX.dll)を、USB
> ストレージに入れて持ち歩いてますが、reモジュールはsreやらその他の複数
> モジュール構成になってるので、面倒で持ち歩いていません。
全部入れても40MBまでいかないですから、全部コピーして持ち歩けるのでは・
・・
> ※Perlは使わないので、Perl式正規表現と言われてもピンとこないし・・・
正規表現は基本的なものならどれも同じようなものです。AWKのつもりで使う
なら問題ないのでは。
> ※ちなみにpcreは色々試してみましたが、オリジナルの知識が無いので結局どう使う
> のか、判りませんでした。やっぱ、Perlは正規表現だけでもやっといたほうがいい
> のかな?
正規表現によるパターンマッチングを利用できると大変便利です。別にPerlで
ないと正規表現が使えないわけではありませんが、使うのには便利な環境とは思
います。
シフトJISでPythonスクリプトを書く場合(無論SJIS版)、reモジュールを使う
場合には文字列をunicodeに変換して渡す必要があるので、それがスマートでは
ないと感じてしまいます。unicodeを扱うためにスクリプトを書くことが不自由
になったような気がしますね。Perlも同様ですが。Tcl/Tkはしばらく書いていな
いので忘れましたが、うまく解決していたような気がするんだけど。
Pythonのgrepはこんな感じ。
import os, sys, re
usage = "usage: %s pattern infile [outfile]" % os.path.basename(sys.argv[0])
if len(sys.argv) < 2:
print usage
else:
matchstr = re.compile(unicode(sys.argv[1], "mbcs"))
input = sys.stdin
output = sys.stdout
if len(sys.argv) > 2:
input = open(sys.argv[2])
if len(sys.argv) > 3:
output = open(sys.argv[3], 'w')
for s in input.xreadlines():
if matchstr.search(unicode(s, "mbcs")):
output.write(s)
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/