【问题标题】:How to print variable inside quotation marks?如何在引号内打印变量?
【发布时间】:2015-03-01 16:03:06
【问题描述】:

我想在引号内打印一个变量。我要打印出"variable"

我尝试了很多,成功的是:

print('"', variable, '"')

但是我在输出中有两个空格:

" variable "

如何在一对引号内打印内容?

【问题讨论】:

  • >>> print '"variable"' "variable" 你只需要一个'
  • 这个很不清楚。加引号是什么原因?你想要一个 shell 解析器或 Pythor 解析器可以读回原始字符串的东西吗?
  • '"'variable'"' 适用于 shell,不适用于 Python。对于 Python,您可以使用 '"' + str(variable) + '"'
  • @CharlesDuffy 我很清楚 OP 的问题是什么。他在 Python 2 逗号分隔的打印列表中得到了不需要的空格。 variable 之后的 " 是一个错字,我无法修复,因为它是单字符编辑。
  • @MikeHousky,如果问题是生成 CSV,那么这完全是错误的方法——csv 模块是正确的,能够正确处理(例如)包含文字的变量内容引号字符。

标签: python output quotation-marks


【解决方案1】:

你可以使用format:

>>> s='hello'
>>> print '"{}"'.format(s)
"hello"

在这里了解格式:Format

在 3x 中你可以使用f:

>>> f'"{s}"'
'"hello"'

【讨论】:

  • 工作。希望我能很快掌握它的功能,刚开始使用 Python,这对我现在没有任何意义。谢谢!
  • 其实'"' + variable + '"'就是我要找的。​​span>
  • @Heiko 这个和上面一样,但是我给你的那个更易读
【解决方案2】:

如果撇号(“单引号”)没问题,那么最简单的方法是:

print repr(str(variable))

否则,更喜欢 .format 方法而不是 % 运算符(请参阅 Hackaholic 的答案)。

% 运算符(请参阅 Bhargav Rao 的回答)也可以工作,即使目前在 Python 3 中也是如此,但打算在未来的某个版本中删除。

使用repr() 的好处是字符串中的引号将得到适当的处理。如果文本中有撇号,repr() 将切换到 "" 引号。它总是会产生 Python 识别为字符串常量的东西。

这对您的用户界面是否有好处,那是另一回事。使用%.format,您会得到一个简写方式,您可能已经开始使用它:

print '"' + str(variable) + '"'

...正如 Charles Duffy 在评论中提到的那样。

【讨论】:

  • 这是最好的答案,但更好的是 print repr(variable) 没有调用 str;如果variable 是例如3False 那么你可能不希望在输出中出现引号。
  • @JimOldfield str() 电话是故意的。来电者试图引用他的variable 中的任何内容。此外,如果你不想引用非字符串,难道你不想在有差异的时候打印出str(variable)而不是repr(variable)吗?
【解决方案3】:

简单地做:

print '"A word that needs quotation marks"'

或者你可以使用三引号字符串:

print( """ "something" """ )

【讨论】:

  • 这可以更好地处理字符串中间错误引号的情况。
【解决方案4】:

有两种简单的方法可以做到这一点。第一种是在每个引号前使用反斜杠,如下所示:

s = "\"variable\""

另一种方法是,如果字符串周围有双引号,则使用单引号,Python 会将它们识别为字符串的一部分(反之亦然):

s = '"variable"'

【讨论】:

    【解决方案5】:

    format 是最好的。这些是替代品。

    >>> s='hello'       # Used widly in python2, might get deprecated
    >>> print '"%s"'%(s)
    "hello"
    
    >>> print '"',s,'"' # Usin inbuilt , technique of print func
    " hello "
    
    >>> print '"'+s+'"' # Very old fashioned and stupid way
    "hello"
    

    【讨论】:

    • print '"',s,'"' 包含两个额外的空格..
    • @AerofoilKite 是的,兄弟。这就是为什么只是另一种选择。不想使用format,因为其他人已经非常漂亮地解释了它的用途
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2015-07-02
    相关资源
    最近更新 更多