我想在文件g中有一个像
这样的文字stat.run('Export RStd \'distFunc.txt\' overwrite')
我正在使用
的变体g.write("stat.run('Export RStd \ ")
g.write("'distFunc.txt\")
g.write("' overwrite')\n")
但是,由于转义序列和\'代码不起作用。我尝试了很多种,我不能使用一个衬垫。所以我试着把它分成三行并解析它,但仍然是转义序列是有问题的! 任何人都可以建议一种方法吗? 问候
答案 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\')')