为什么sys.argv[]中有空格?
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' 前后都有空格呢?当我单独打印 str 和 filename 变量时,它们并没有这些空格。
我也试过在打印时使用 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
给覆盖掉。