与python中的\和'组合的转义序列

时间:2016-10-21 15:26:37

标签: python escaping sequence

我想在文件g中有一个像

这样的文字
stat.run('Export RStd \'distFunc.txt\' overwrite')

我正在使用

的变体
g.write("stat.run('Export RStd \ ")
g.write("'distFunc.txt\")
g.write("' overwrite')\n")

但是,由于转义序列和\'代码不起作用。我尝试了很多种,我不能使用一个衬垫。所以我试着把它分成三行并解析它,但仍然是转义序列是有问题的! 任何人都可以建议一种方法吗? 问候

1 个答案:

答案 0 :(得分:3)

使用原始字符串(以r为前缀)和三引号(连续三个'"个字符的序列)。在原始字符串中,反斜杠不是魔法。在三引号字符串中,单引号和双引号都不是魔术。以下两个完整的程序是等效的:

with open ("g", "w") as g:
    g.write(r'''stat.run('Export RStd \'distFunc.txt\' overwrite')''')
with open ("g", "w") as g:
    g.write(r"""stat.run('Export RStd \'distFunc.txt\' overwrite')""")

或者,使用带双引号的原始字符串。在双引号字符串中,单引号不是魔术:

with open ("g", "w") as g:
    g.write(r"stat.run('Export RStd \'distFunc.txt\' overwrite')")

或者,如果您不想使用原始字符串,则可以转义反斜杠:

with open ("g", "w") as g:
    g.write("stat.run('Export RStd \\'distFunc.txt\\' overwrite')")

最后,如果必须使用单引号字符串,则可以转义单引号:

with open ("g", "w") as g:
    g.write('stat.run(\'Export RStd \\\'distFunc.txt\\\' overwrite\')')

请注意上面的每一行源代码名称都是完全相同的字符串。尽管它们在源代码中的表示方式不同,但所有结果字符串都是相同的:

assert (
    r'''stat.run('Export RStd \'distFunc.txt\' overwrite')''' ==
    r"""stat.run('Export RStd \'distFunc.txt\' overwrite')""" ==
    r"stat.run('Export RStd \'distFunc.txt\' overwrite')" ==
    "stat.run('Export RStd \\'distFunc.txt\\' overwrite')" ==
    'stat.run(\'Export RStd \\\'distFunc.txt\\\' overwrite\')')