いくつかの入力行のフィールドを解析するPythonプログラムを作成しています。コマンドラインからオプションとしてフィールドセパレータを入力できるようにしたいと思います。私はこれを行うために使用optparse
しています。私は、のようなものを入力すると、タブではなく、で\t
文字通り分離するという問題に直面しています。これは私が望むものです。\t
考えられる引用符、円記号、およびのすべての組み合わせを試したので、これはPythonのものであり、シェルではないと確信していt
ます。
optparse
引数を、ではなく単純な入力(そのようなものはありますか?)にすることができればraw_input
、それはうまくいくと思います。しかし、私にはそれを行う方法がわかりません。
また、文字列を2文字から1文字のタブに変換するために、さまざまな置換と正規表現のトリックを試しました"\t"
が、成功しませんでした。
例、ここinput.txt
で:
field 1[tab]field\t2
(注:[tab]
はタブ文字でfield\t2
あり、8文字の文字列です)
parseme.py:
#!/usr/bin/python
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-d", "--delimiter", action="store", type="string",
dest="delimiter", default='\t')
parser.add_option("-f", dest="filename")
(options, args) = parser.parse_args()
Infile = open(options.filename, 'r')
Line = Infile.readline()
Fields = Line.split(options.delimiter)
print Fields[0]
print options.delimiter
Infile.close()
これは私に与えます:
$ parseme.py -f input.txt
field 1
[tab]
ねえ、素晴らしい、デフォルト設定は正しく機能しました。(はい、私は\ tをデフォルトにしてそれを忘れることができることを知っていますが、このタイプの問題に対処する方法を知りたいです。)
$ parseme.py -f input.txt -d '\t'
field 1[tab]field
\t
これは私が望むものではありません。