在引号内使用引号


72

当我想print在Python中执行命令并且需要使用引号时,我不知道如何在不关闭字符串的情况下执行该命令。

例如:

print " "a word that needs quotation marks" "

但是,当我尝试执行上面的操作时,我最终关闭了字符串,并且无法将需要的单词放在引号之间。

我怎样才能做到这一点?

Answers:


179

您可以通过以下三种方式之一进行操作:

  1. 一起使用单引号和双引号:
    print('"A word that needs quotation marks"')
    "A word that needs quotation marks"
  1. 转义字符串中的双引号:
    print("\"A word that needs quotation marks\"")
    "A word that needs quotation marks" 
  1. 使用三引号引起来的字符串:
    print(""" "A word that needs quotation marks" """)
    "A word that needs quotation marks" 

5
转义双引号是可行的,但是您放入的多余空格现在已成为字符串的一部分,可以通过消除空格来轻松解决。类似地,用三引号引起来的字符串-多余的空格成为字符串的一部分,我不确定如何解决此问题,因为将内部的“置于三进制旁边”会导致SyntaxError
James Polley 2012年

3
您可以通过使用单一的三引号避免语法错误:“”“‘一句话’”“”,但现在事情..越来越傻
帝斯曼

1
如果您想连接多个这样的词,我将使用此答案。还给出了Python 3.6特定的答案,该答案非常易读。
glarys '18

4)print('\'A word that needs quotation marks\'')
BarbarosÖzhan19年

12

您需要逃脱它。(使用Python 3打印功能):

>>> print("The boy said \"Hello!\" to the girl")
The boy said "Hello!" to the girl
>>> print('Her name\'s Jenny.')
Her name's Jenny.

请参阅python页面以获取字符串文字


4

Python接受“和”作为引号,因此您可以这样做:

>>> print '"A word that needs quotation marks"'
"A word that needs quotation marks"

另外,只要逃脱内在的

>>> print "\"A word that needs quotation marks\""
"A word that needs quotation marks"

4

使用原义转义字符 \

print("Here is, \"a quote\"")

字符基本上意味着忽略我的下一个字符的语义上下文,并按字面意义处理它


1

一类重复出现的情况是要求对外部过程使用引号。一种解决方法是不使用外壳,这消除了对一级引用的要求。

os.system("""awk '/foo/ { print "bar" }' %""" % filename)

可以有用地替换

subprocess.call(['awk', '/foo/ { print "bar" }', filename])

(这也修复了filename需要从shell逃脱shell元字符的错误,而原始代码无法做到这一点;但是没有shell,则不需要这样做)。

当然,在大多数情况下,您根本不需要或不需要外部过程。

with open(filename) as fh:
    for line in fh:
        if 'foo' in line:
            print("bar")

1

当您有多个这样的词想要串联在一个字符串中时,我建议您使用formatf-strings大幅提高其可读性(我认为)。

举个例子:

s = "a word that needs quotation marks"
s2 = "another word"

现在你可以做

print('"{}" and "{}"'.format(s, s2))

将打印

"a word that needs quotation marks" and "another word"

从Python 3.6开始,您可以使用:

print(f'"{s}" and "{s2}"')

产生相同的输出。


0

在Windows上的Python 3.2.2中,

print(""""A word that needs quotation marks" """) 

还可以 我认为这是Python解释器的增强。



0

我很惊讶,没有人提到明确的转换标志,

>>> print('{!r}'.format('a word that needs quotation marks'))
'a word that needs quotation marks'

该标志!rrepr()内置函数1的简写。它用于打印对象表示形式, object.__repr__()而不是object.__str__()

但是有一个有趣的副作用

>>> print("{!r} \t {!r} \t {!r} \t {!r}".format("Buzz'", 'Buzz"', "Buzz", 'Buzz'))
"Buzz'"      'Buzz"'     'Buzz'      'Buzz'

请注意,如何不同地处理引号的不同组成,以使其适合Python对象2的有效字符串表示形式。


1如果有人知道,请纠正我。

2问题的原始示例" "word" "不是Python中的有效表示形式


0

这在IDLE Python 3.8.2中对我有用

print('''"A word with quotation marks"''')

三重单引号似乎允许您将双引号包括在字符串中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.