在引号内使用引号

94
当我想在Python中执行一个print命令并且需要使用引号时,我不知道如何在不关闭字符串的情况下实现它。
例如:
print " "a word that needs quotation marks" "

但是当我尝试做我上面所做的事情时,我最终关闭了字符串,我无法在引号之间放置我需要的单词。

我该怎么办?

12个回答

224
你可以用以下三种方法之一实现这个功能:
  1. 同时使用单引号和双引号:
  2. print('"A word that needs quotation marks"')
    "A word that needs quotation marks"
    
  3. 在字符串中转义双引号:

  4. print("\"A word that needs quotation marks\"")
    "A word that needs quotation marks" 
    
  5. 使用三引号字符串:

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

5
转义双引号是可行的,但您添加的额外空格现在成为字符串的一部分,通过去掉这些空格可以轻松解决。三重引号字符串也是如此,额外的空格会成为字符串的一部分,我不确定该怎样修复这个问题,因为将内部的双引号放在三重引号旁边会导致语法错误。 - James Polley
3
您可以通过使用单个三引号避免 SyntaxError 错误:''' "a word" ''',但现在情况有些荒谬。 - DSM
1
如果您有多个类似的单词需要连接,我建议使用这个答案。还有一个特定于Python 3.6的答案,非常易读。 - glarys
  1. print('\'需要引号的单词\'')
- Barbaros Özhan

20
你需要转义它。
>>> 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页面以获取字符串字面值的相关信息。

7

Python接受双引号和单引号作为引用标记,因此您可以这样做:

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

或者,只需转义内部的“s”

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

5

使用转义字符\

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

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


2
当您需要将几个像这样的单词连接成一个字符串时,我建议使用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}"')

产生相同的输出。

1

在重复的情况下,常见的一个问题是需要为外部进程使用引号。解决这个问题的方法是不使用 shell,这样就可以避免一层引号的要求。

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

可以有用地替换为。
subprocess.call(['awk', '/foo/ { print "bar" }', filename])

这也修复了原始代码未能做到的需要从 shell 转义 filename 中的 shell 元字符的 bug;但是在没有 shell 的情况下,不需要这样做。

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

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

0

像这样用单引号括起来

print '"a word that needs quotation marks"'

"

或用双引号括起来

"
print "'a word that needs quotation marks'"

或使用反斜杠\进行转义

print " \"a word that needs quotation marks\" "

0
你也可以尝试字符串拼接: print " "+'"'+'需要引号的单词'+'"'

0
如果您不想使用转义字符并且实际上想打印引号而不说 "\" 等等,您可以告诉 Python 打印 " 字符的 ASCII 值。 ASCII 中的引号字符为 34(单引号为 39)。
在 Python 3 中:
print(f'{chr(34)}')

输出: "


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0

在Windows上的Python 3.2.2中,

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

没问题。我认为这是Python解释器的增强。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接