0

これはとても単純なはずですが、私はいくつかの深刻な問題を抱えています。私がやりたいのは、ユーザー入力が2文字の式と一致するかどうかを確認することだけです。私が抱えている最大の問題は、私がreライブラリにあまり精通しておらず、ドキュメントがあまり役に立たないことだと思います。

これは私がこれまでに試したことです:

1を試してください

if re.match(sys.argv[3],  "GL",  re.I):
    input_file_path = "V:\\test"

2を試してください

if re.ignorecase(sys.argv[3],  "GL"):
    input_file_path = "V:\\test"

3を試す

if sys.argv[3] == "GL":
    input_file_path = "V:\\test"

プログラムを呼び出して実行する方法:filename.py testertestGL「tester」と「test」はまだ実際には使用されていません。

編集:私は私の主な問題を見つけました。私はelifではなくifステートメントの束を呼んでいました。つまり、最後に言ったのは、exit()が常にヒットしたことです(最初のifをテストしていたため)。新人の間違い

4

3 に答える 3

6

比較する前に、テストする文字列を小文字に変換するだけで、問題はありません。

if sys.argv[3].lower() == "gl":
    input_file_path = "V:\\test"

さらに注目すべきことに、正規表現はこの仕事に適したツールではありません。

于 2012-07-20T16:10:01.243 に答える
1

あなたのre.matchは後方です。パターンが最初に来ます。試す:

if re.match('GL', sys.argv[3], re.I):
    input_file_path = "V:\\test"
于 2012-07-20T16:17:50.030 に答える
0

明らかに、3番目の引数は「GL」ではありません。print sys.argvそして、あなたはそれを見るでしょう。私の推測では、あなたはあなたのインデックスで1つずれていると思います。

スクリプトの実行に使用するコマンドラインを表示してください。


sys.argv [3]を印刷すると、正確にGL –LiverpoolFTWが印刷されます。


その後、バグは他の場所にあります。sys.argv[3].lower() == "gl"直前と直後に印刷input_file_pathすると、期待値が表示されます。ここで本当に必要なのはデバッガーです。pdbは組み込みの標準ですが、強くお勧めしpudbます。

すばやくセットアップするには、これらを端末に貼り付けます。virtualenvプロジェクトの依存関係を分離しておくための業界標準です。

cd ~
wget https://raw.github.com/pypa/virtualenv/1.6.3/virtualenv.py
python virtualenv.py mypy
source mypy/bin/activate
pip install pudb

activate環境に入りたいときはいつでもそのファイルを入手してください。実行deactivateして(で定義されたエイリアスactivate)を実行します。#!/usr/bin/env python特定のPythonインスタンスをハードコーディングするのではなく、環境(つまり)でPythonを使用するようにしてください。

于 2012-07-20T16:14:39.423 に答える