为什么sys.argv[]中有空格?

1 投票
7 回答
827 浏览
提问于 2025-04-17 02:17
argc = len(sys.argv)

if (argc < 3 or argc > 5):
    printusage()
    sys.exit()

insensitive = 1 if ("-i" in sys.argv) else 0
boundaries = 1 if ("-b" in sys.argv) else 0

filename = sys.argv[argc-2]
str = sys.argv[argc-1]

print "Looking for '", str , "' in '" , filename , "'"

输出结果是

python count_words.py -b -i football.txt goal

在 'football.txt' 中查找 ' goal '

为什么在 'goal' 和 'football.txt' 前后都有空格呢?当我单独打印 strfilename 变量时,它们并没有这些空格。

我也试过在打印时使用 str.strip(),但是没有效果。

有什么想法吗?

7 个回答

3

问题出在你打印语句中的逗号上。如果你这样写就可以了:

print "Looking for '%s' in '%s'" %(str, filename)

4

这是因为你把不同的字符串分开传给打印语句,而不是把它们合并成一个字符串一次性打印出来:

>>> print "a", "b"
a b
>>> print "a" + "b"
ab

需要注意的是,合并字符串的开销比较大:使用插值的方法会更好,像这样:

>>> print "A %s with %s" % ("string", "placeholders")
A string with placeholders
7

这个空格不是出现在 sys.argv 里,而是因为在打印的时候用了逗号。你可以试试这样:

print "Looking for '%s' in '%s'" % (str, filename)

另外,尽量不要把内置的 str 给覆盖掉。

撰写回答