python:使用string-escape编码以获取正确的引号

时间:2016-03-23 10:40:40

标签: python escaping encode

我想编码我的字符串:

x="print 'Hello.\nI\'m a robot from district 09'"
x=x.encode('string-escape')
print x

# Result: print \'Hello.\nI\'m a robot from district 09\'

但这不是我期待的结果。我想要这样的东西:

# Result: print 'Hello.\nI\'m a robot from district 09'

如何获得该结果?所以当我使用'exec x'执行它时,我会得到这个:

exec x
# Result: 
Hello.
I'm a robot from district 09

1 个答案:

答案 0 :(得分:0)

使用repr

x="print 'Hello.\nI\'m a robot from district 09'"
print repr(x)

# Result: 'Hello.\nI\'m a robot from district 09'

编辑:正如评论中提到的,这种方法错过了'在我的 使用' r可以简单地实现打印原始字符串。请参阅下面的示例。我这次确认了结果。

x= r"print 'Hello, \nI\'m a robot from district 09'"
print x

#result: print 'Hello, \nI\'m a robot from district 09'

Edit2 :您无法翻转现有字符串" raw"。解析器可以理解文字中的r前缀;它告诉它忽略字符串中的转义序列。但是,一旦解析了字符串文字,原始字符串和"常规"之间没有区别。一。例如,如果您有一个包含换行符的字符串,则无法在运行时告诉该换行符是来自转义序列\ n还是来自" \ next"之类的字符串。从任何这些方法构造的实际字符串对象看起来都是一样的。

因此,任何使用string-encode / string-escape和repr的尝试都将因您预期的用途而失败。

希望这有帮助。