在python中使用str.format时引用

时间:2014-01-24 22:43:59

标签: python string python-2.7

使用str.format在python 2.7.6中输出时如下所示:

>>> "| {0: ^18} | {1: ^18} |".format(1, 0.001)

结果:

'|         1          |       0.001        |'

我想知道如何抑制输出字符串两端的单引号。

3 个答案:

答案 0 :(得分:3)

引号不是format语句的返回值的一部分,它们来自python解释器,告诉你它正在显示一个字符串值:

momerath:~ mgregory$ python
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> "| {0: ^18} | {1: ^18} |".format(1, 0.001)
'|         1          |       0.001        |'
>>> print "| {0: ^18} | {1: ^18} |".format(1, 0.001)
|         1          |       0.001        |
>>> a = 1
>>> a
1
>>> a = "foo"
>>> a
'foo'
>>> print a
foo
>>> 

...因此,如果您只想查看字符串的值,只需打印即可。

我不知道有什么方法可以让python解释器在报告时不引用字符串结果。

答案 1 :(得分:2)

迎接GreenAsJade的挑战,另一次尝试通过猴子修补str的子类来直接回答问题,该子类将回显REPL上的 str 表示。

class SillyString(str):
    def __repr__(self):
        return self.__str__()

实例化字符串:

>>> foo = SillyString('foo')

让它回应Python shell:

>>> foo
foo

与标准Python str:

形成对比
>>> 'foo'
'foo'

答案 2 :(得分:1)

GreenAsJade有一个很好的答案(+1),但我会看看我是否可以改进它。

解释器只是通过打印对象的__repr__来回显REPL中的文字,如果打印的字符串应该显示对象的明确表示。因此,要删除结束引号(以及明确的对象表示),请打印对象:

>>> ['foo'].__repr__()
"['foo']"

>>> 'foo'.__repr__()
"'foo'"

>>> print 'foo'.__repr__()
'foo'

>>> print 'foo'
foo