在引号内使用引号

问题描述 投票:0回答:13

当我想在Python中执行

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

例如:

print " "a word that needs quotation marks" "

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

我该怎么做?

python syntax string-literals quoting
13个回答
231
投票

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

  1. 同时使用单引号和双引号:

    print('"A word that needs quotation marks"')
    "A word that needs quotation marks"
    
  2. 转义字符串中的双引号:

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

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

21
投票

你需要逃离它。

>>> 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"

6
投票

使用文字转义字符

\

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

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


2
投票

当你有几个像这样的单词想要连接在一个字符串中时,我建议使用

format
f-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])

(还修复了

filename
中的shell元字符需要从shell中转义的错误,而原始代码未能做到这一点;但如果没有shell,则不需要这样做)。

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

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

1
投票

我很惊讶没有人提到显式转换标志

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

标志

!r
repr()
内置函数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中的有效表示


1
投票

这在 IDLE Python 3.8.2 中对我有用

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

三个单引号似乎允许您将双引号作为字符串的一部分包含在内。


0
投票

在 Windows 上的 Python 3.2.2 中,

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

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


0
投票

您还可以尝试字符串添加:

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


0
投票

用单引号括起来,例如

print '"a word that needs quotation marks"'

或用双引号括起来

print "'a word that needs quotation marks'"

或者使用反斜杠\来转义

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

0
投票

如果您不想使用转义字符并且实际上想打印引号而不说

"
\"
等,您可以告诉 python 打印
"
字符的 ASCII 值。 ASCII 中的引号字符为 34,(单引号为 39)

在Python 3中

print(f'{chr(34)}')

输出:

"


0
投票

关于防弹少年团的引言,他们很难工作

© www.soinside.com 2019 - 2024. All rights reserved.