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 tester test GL "tester" 和 "test" 还没有真正使用。

编辑:我发现了我的主要问题。我正在调用一堆 if 语句而不是 elif。所以最后一个说 else: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

显然第三个参数不是'GL'。print sys.argv你会看到的。我的猜测是你的索引差了一个。

向我们展示您用于运行脚本的命令行。


打印 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)退出。确保在环境中使用python(即#!/usr/bin/env python)而不是硬编码特定的python 实例。

于 2012-07-20T16:14:39.423 回答