这看起来应该很简单,但我遇到了一些严重的问题。我想要做的就是查看用户输入是否与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 "测试"和"测试"尚未真正使用过。
编辑:我发现了我的主要问题。我在调用一堆if语句而不是elif。所以最后一个说其他的:exit()总是被击中(因为我正在测试第一个if)。菜鸟错误答案 0 :(得分:6)
在比较之前,将字符串转换为test to smallcase,你应该没问题:
if sys.argv[3].lower() == "gl":
input_file_path = "V:\\test"
更值得注意的是,正则表达式不适合这项工作。
答案 1 :(得分:1)
你的re.match是落后的。模式首先出现。尝试:
if re.match('GL', sys.argv[3], re.I):
input_file_path = "V:\\test"
答案 2 :(得分:0)
显然第三个论点不是'GL'。 print sys.argv
你会看到的。我的猜测是你的索引中有一个。
向我们展示您用于运行脚本的命令行。
打印sys.argv [3]确切打印GL - LiverpoolFTW
然后这个bug就在别的地方。如果您之前打印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实例。