optparse不会将第二个空格保存到arg中

时间:2013-05-16 13:50:11

标签: python regex optparse

我正在编写一个正则表达式匹配程序,我无法使用以空格开头的正则表达式。

有没有办法告诉OptParse只能用第一个空格分隔?

3 个答案:

答案 0 :(得分:3)

不,因为 shell 删除了这些空格,而不是optparse。 Python提供了已经解析的命令行参数列表。

使用引号来保留空格:

./yourscript.py --option=" spaces in here "

为了演示,我创建了以下脚本:

#!/usr/bin/env python
import sys
print sys.argv

向您展示optparse看到的内容:

$ ./demo.py     foo bar baz
['./demo.py', 'foo', 'bar', 'baz']

注意如何删除空白并将三个值传递给脚本。但引用:

$ ./demo.py "    foo bar" baz
['./demo.py', '    foo bar', 'baz']

保留了空格,我将两个字符串连接成一个字符串。

答案 1 :(得分:1)

你的问题缺乏很多数据来有效地回答它,但也许有以下帮助:

如果您无法使用以空格开头的正则表达式,请尝试使用代表空格的替换字符:\s ..因此\s{3}test将匹配"< 3 space> test& #34;

如果是shell脚本,请记得双重转义,因为shell会忽略s中的\s。因此,正确的版本将是\\s{3}test

答案 2 :(得分:0)

命令行在它们到达Python程序之前拆分参数。您可能希望使用"'来封装正则表达式,具体取决于您的shell。例如,在Bash中,双引号将在$`字符上启用shell扩展,这可能会导致错误。

./match.py --pattern=" something (.*)"