在引号内使用引号

时间:2012-01-29 02:14:14

标签: python string

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

例如:

print " "a word that needs quotation marks" "

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

我该怎么做?

10 个答案:

答案 0 :(得分:147)

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

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" 

答案 1 :(得分:9)

你需要逃脱它:

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

请参阅string literals的python页面。

答案 2 :(得分: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"

答案 3 :(得分:3)

使用文字转义字符\

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

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

答案 4 :(得分:1)

在Windows上的Python 3.2.2中,

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

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

答案 5 :(得分: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")

答案 6 :(得分: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}"')

产生相同的输出。

答案 7 :(得分:0)

您还可以尝试添加字符串: print " "+'"'+'a word that needs quotation marks'+'"'

答案 8 :(得分:0)

我很惊讶没有人提到 explicit conversion flag

>>> 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中不是有效的表示形式

答案 9 :(得分:0)

这在IDLE Python 3.8.2中对我有用

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

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