根据文档,内置字符串编码string_escape
:
产生 [s] 一个适合作为 Python 源代码中的字符串文字的字符串
...而unicode_escape
:
在 Python 源代码中产生适合作为 Unicode 文字的字符串
因此,它们应该具有大致相同的行为。但是,他们似乎以不同的方式对待单引号:
>>> print """before '" \0 after""".encode('string-escape')
before \'" \x00 after
>>> print """before '" \0 after""".encode('unicode-escape')
before '" \x00 after
转义单引号,而string_escape
Unicode 则没有。假设我可以简单地:
>>> escaped = my_string.encode('unicode-escape').replace("'", "\\'")
...并获得预期的行为?
编辑:只是为了超级清楚,预期的行为是得到适合作为文字的东西。