3

我正在使用 python 与操作系统进行通信。

我需要创建以下形式的字符串:

string = "done('1') && done('2')"

请注意,我的字符串中必须有双引号,但我不确定如何做到这一点,因为双引号在 python 中用于定义字符串。

然后我做类似的事情:

os.system(string)

但是系统只会读取带有双引号和单引号的字符串。

我试过了:

>>> s = '"done('1') && done('2')"'
  File "<stdin>", line 1
    s = '"done('1') && done('2')"'
                ^
SyntaxError: invalid syntax

我还尝试了此处建议的三引号,但出现错误:

>>> s = """"done('1') && done('2')""""
  File "<stdin>", line 1
    s = """"done('1') && done('2')""""
                                     ^
SyntaxError: EOL while scanning string literal

如何在python中存储包含单引号(')和双引号(“)的字符串

4

4 回答 4

5

当您使用三引号字符串时,您需要记住,当 Python 找到一个由三个引号组成的闭合集合时,该字符串结束- 而且它并不贪婪。这样你就可以:

更改为用三个引号括起来:

my_command = '''"done('1') && done('2')"'''

转义结尾引用:

my_command = """"done('1') && done('2')\""""

或在引号周围添加空格并调用strip结果字符串:

my_command = """
"done('1') && done('2')"
""".strip()
# Blank lines are for illustrative purposes only
# You can do it all on one line as well (but then it looks like you have
# 4 quotes (which can be confusing)
于 2013-03-24T18:12:05.150 回答
3

您可以转义这两种引号:

s = '"done(\'1\') && done(\'2\')"'
于 2013-03-24T18:12:40.097 回答
2

All four flavors of quotes:

print('''"done('1') && done('2')"''')  # No escaping required here.
print(""""done('1') && done('2')\"""")
print("\"done('1') && done('2')\"")
print('"done(\'1\') && done(\'2\')"')

Output:

"done('1') && done('2')"
"done('1') && done('2')"
"done('1') && done('2')"
"done('1') && done('2')"
于 2013-03-24T18:24:46.420 回答
0

我认为这是您所期望的: string = "\"done('1') && done('2')\""

如果这不能回答您的问题,请忽略。

于 2013-03-24T18:27:43.023 回答