为什么打印文件时会显示这些引号?

时间:2015-11-24 14:23:23

标签: python

我使用以下代码创建文件:

file = open("full_names.txt", "wb")

file.write("Bob Smith\nMichael Jackson\nTony Tiger\nWinston Churchill\nHenry Kissinger\nHamid Karzai\nJohn Major\nJohnny Quest")

file.close()

然后我运行脚本将文件打印到屏幕:

with open("full_names.txt", "rb") as f:
    for line in f:
        first, last = line.strip().split(" ")
        print "Last Name: %r First Name: %r" % (last, first)

但是输出会显示名称周围的引号,如下所示:

Last Name: 'Smith' First Name: 'Bob'

有人知道为什么或如何摆脱它们?

2 个答案:

答案 0 :(得分:7)

如果您将%r替换为%s,则应将其删除。

%r显示了对象的表示形式,该对象应该代表一个值,该值可以复制并粘贴到python shell中以重现该对象。 %s将显示投射到字符串的对象的值。

如文档中所述 https://docs.python.org/2/library/stdtypes.html#string-formatting

repr因为这个概念很酷: https://docs.python.org/2/library/functions.html#func-repr

答案 1 :(得分:2)

只是因为您正在使用%r。更改为%s,它将消失=)

print "Last Name: %s First Name: %" % (last, first)

%r相当于repr(var)%s相当于str(var)