2013-05-16 32 views

回答

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

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

如果您无法使用带有空格开头的正则表达式,请尝试使用替换字符表示空格:\s ..因此\s{3}test将匹配“< 3个空格>测试”。

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

0

命令行在参数到达您的Python程序之前拆分参数。根据你的shell,你可能想用"'封装你的正则表达式。例如,在Bash中,双引号将在$`字符上启用shell扩展,这可能会导致错误。

./match.py --pattern=" something (.*)" 
相关问题