Python 打印与空白问题
我想打印一个结果,比如:
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)