当我想print在Python中执行命令并且需要使用引号时,我不知道如何在不关闭字符串的情况下执行该命令。
例如:
print " "a word that needs quotation marks" "
但是,当我尝试执行上面的操作时,我最终关闭了字符串,并且无法将需要的单词放在引号之间。
我怎样才能做到这一点?
Answers:
您可以通过以下三种方式之一进行操作:
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('\'A word that needs quotation marks\'')
一类重复出现的情况是要求对外部过程使用引号。一种解决方法是不使用外壳,这消除了对一级引用的要求。
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 " "+'"'+'a word that needs quotation marks'+'"'
我很惊讶,没有人提到明确的转换标志,但
>>> 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中的有效表示形式