当我想在Python中执行
print
命令并且需要使用引号时,我不知道如何在不关闭字符串的情况下执行此操作。
例如:
print " "a word that needs quotation marks" "
但是当我尝试执行上面所做的操作时,我最终关闭了字符串,并且无法将我需要的单词放在引号之间。
我该怎么做?
您可以通过以下三种方式之一执行此操作:
同时使用单引号和双引号:
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"
使用三引号字符串:
print(""" "A word that needs quotation marks" """)
"A word that needs quotation marks"
你需要逃离它。
>>> 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 页面以了解字符串文字。
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"
使用文字转义字符
\
print("Here is, \"a quote\"")
该字符基本上意味着忽略我的下一个字符的语义上下文,并按其字面意义处理它。
当你有几个像这样的单词想要连接在一个字符串中时,我建议使用
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}"')
产生相同的输出。
重复中普遍存在的一种情况是要求对外部流程使用报价。 解决方法是不使用 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")
我很惊讶没有人提到显式转换标志
>>> 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中的有效表示
这在 IDLE Python 3.8.2 中对我有用
print('''"A word with quotation marks"''')
三个单引号似乎允许您将双引号作为字符串的一部分包含在内。
在 Windows 上的 Python 3.2.2 中,
print(""""A word that needs quotation marks" """)
还可以。我认为是Python解释器的增强。
您还可以尝试字符串添加:
print " "+'"'+'a word that needs quotation marks'+'"'
用单引号括起来,例如
print '"a word that needs quotation marks"'
或用双引号括起来
print "'a word that needs quotation marks'"
或者使用反斜杠\来转义
print " \"a word that needs quotation marks\" "
如果您不想使用转义字符并且实际上想打印引号而不说
"
或 \"
等,您可以告诉 python 打印 "
字符的 ASCII 值。
ASCII 中的引号字符为 34,(单引号为 39)
在Python 3中
print(f'{chr(34)}')
输出:
"
关于防弹少年团的引言,他们很难工作