Python 打印与空白问题

1 投票
4 回答
5186 浏览
提问于 2025-04-16 07:09

我想打印一个结果,比如:

for record in result:
    print varone,vartwo,varthree

我正在尝试把从SQL查询中得到的变量连接起来,但我发现有空格。请问我该怎么去掉打印结果中的空格?我是不是应该先把结果放到一个变量里,然后用'strip(newvar)'去掉空格,再打印'newvar'?

4 个回答

0

在你把字符串传给打印命令之前,先用字符串格式化处理一下:

for record in result:
    print '%d%d%d' % (varone, vartwo, varthree)

想了解Python的字符串格式化,可以点击这里查看相关内容。

1

打印的时候会在变量之间加空格,并且会换行。如果你只是觉得字符串之间的空格让你烦,可以在打印之前把这些字符串连接起来。

print varone+vartwo+varthree

其实,有很多种方法可以做到这一点。最终的结果都是在打印之前先创建一个新的字符串,把你的值组合在一起。下面是我能想到的几种方法:

# string concatenation
# the drawback is that your objects are not string
# plus may have another meaning
"one"+"two"+"three"

#safer, but non pythonic and stupid for plain strings
str("one")+str("two")+str("three")

# same idea but safer and more elegant
''.join(["one", "two", "three"])

# new string formatting method
"{0}{1}{2}".format("one", "two", "three")

# old string formating method
"%s%s%s" % ("one", "two", "three")

# old string formatting method, dictionnary based variant
"%(a)s%(b)s%(c)s" % {'a': "one", 'b': "two", 'c':"three"}

你也可以完全避免创建中间的连接字符串,直接用write代替print。

import sys
for x in ["on", "two", "three"]:
    sys.stdout.write(x)

而在Python 3.x中,你还可以自定义打印时的分隔符:

print("one", "two", "three", sep="")
4

这个:

print "%s%s%s" % (varone,vartwo,varthree)

会把引号里的第一个 %s 替换成 varone 里的值,第二个 %s 替换成 vartwo 里的内容,依此类推。

编辑:
从 Python 2.6 开始,你应该更喜欢使用这个方法:

print "{0}{1}{2}".format(varone,vartwo,varthree)

(感谢 Space_C0wb0y)

撰写回答