【问题标题】:How to print double quotes around a variable?如何在变量周围打印双引号?
【发布时间】:2013-11-18 19:52:51
【问题描述】:

例如,我们有:

word = 'Some Random Word'
print '"' + word + '"'

有没有更好的方法在变量周围打印双引号?

【问题讨论】:

  • 如果word 包含自己的双引号,您希望它们被转义还是不理会?

标签: python python-2.7


【解决方案1】:

更新:

来自Python 3.6,您可以使用f-strings

>>> print(f'"{word}"')
"Some Random Word"

原答案:

你可以试试%-formatting

>>> print('"%s"' % word)
"Some Random Word"

str.format

>>> print('"{}"'.format(word))
"Some Random Word"

或者用\转义引号字符

>>> print("\"%s\"" % word)
"Some Random Word"

而且,如果双引号不是限制(即单引号可以)

>>> from pprint import pprint, pformat
>>> print(pformat(word))
'Some Random Word'
>>> pprint(word)
'Some Random Word'

或者像其他人已经说过的那样(将其包含在您的声明中)

>>> word = '"Some Random Word"'
>>> print(word)
"Some Random Word"

使用任何一个觉得更好或更容易混淆的方法。

而且,如果你需要为多个单词做,你还不如创建一个函数

def double_quote(word):
    return '"%s"' % word

print(double_quote(word), double_quote(word2))

并且(如果您知道自己在做什么&)如果您担心这些性能,请参阅this comparison

【讨论】:

  • 这些解决方案(除了pformat?)都不能处理word 包含双引号的可能性。
  • @celticminstrel 这不是真的。 所有都可以考虑word本身带有双引号的可能性。 word 的内容不影响方法在其周围添加双引号的能力。如果有人确实只想要一对双引号,那么这完全是一个不同的问题。
  • 我想我不够清楚......我指的是在必要时转义引号。如果你不在乎,那么当然,这些方法都可以。
  • @celticminstrel 我仍然不明白为什么需要转义引号或者可能会弄乱将word 包裹在它们周围。您能否提供一个示例输入和预期输出?
  • 嗯,这首先取决于您为什么要这样做。如果它只是为了输出,显示给用户,那么它可能并不重要(尽管中间有一个随机的双引号仍然很奇怪)。另一方面,如果它意味着序列化,那么转义引号是必不可少的。当然,这些只是示例。
【解决方案2】:

json.dumps怎么样:

>>> import json
>>> print(json.dumps("hello world"))
"hello world"

与这里提到的其他方法相比,它的优点是它也可以在字符串中转义引号(采用str.format!),始终使用双引号,实际上是为了可靠的序列化(采用repr()!):

>>> print(json.dumps('hello "world"!'))
"hello \"world\"!"

【讨论】:

    【解决方案3】:

    你可以试试repr

    代码:

    word = "This is a random text" print repr(word)

    输出:

    'This is a random text'

    【讨论】:

    • 这是完美的答案...除非您真的特别想要双引号,在这种情况下json.dumps 可能是更好的选择。
    【解决方案4】:

    这看起来很傻,但对我来说很好用。它易于阅读。

    word = "Some Random Word"
    quotes = '"'
    print quotes + word + quotes
    

    【讨论】:

      【解决方案5】:
      word = '"Some Random Word"' # <-- did you try this?
      

      【讨论】:

        【解决方案6】:

        使用格式方法或f-string配合repr(),可以写得更优雅。

        a = "foo"
        print("{!r}".format(a))
        b = "bar"
        print(f"{b!r}")
        

        【讨论】:

        • 您能否提供相关文档的链接
        【解决方案7】:

        使用转义序列

        例子:

        int x = 10;
        System.out.println("\"" + x + "\"");
        

        O/P

        "10"
        

        【讨论】:

        • OP 要求的是 Python,而不是 Java
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2015-03-01
        • 1970-01-01
        • 2017-06-04
        • 1970-01-01
        相关资源
        最近更新 更多