我似乎遇到了与开发界其他所有人相反的问题。我需要从字符串生成转义字符。例如,假设我有一个词MESSAGE:,我需要生成:

\\u004D\\u0045\\u0053\\u0053\\u0041\\u0047\\u0045\\u003A\\u0053\\u0069\\u006D


我可以使用Python获得的最接近的东西是:

u'MESSAGE:'.encode('utf16')
# output = '\xff\xfeM\x00E\x00S\x00S\x00A\x00G\x00E\x00:\x00'


我最初的想法是我可以用\x代替\u00(或类似的东西),但是我很快意识到这是行不通的。如何在Python中输出转义(未转义?)字符串(最好)?

在所有人开始“回答”并投反对票之前,转义的\u00...字符串是我的应用程序从另一个我无法控制的第三方应用程序获取的内容。我正在尝试生成自己的测试数据,因此不必依赖于该第三方应用程序。

最佳答案

我认为此(快速且肮脏的)代码可以满足您的要求:

''.join('\\u' + x.encode('utf_16_be').encode('hex') for x in u'MESSAGE:')
# output: '\\u004d\\u0045\\u0053\\u0053\\u0041\\u0047\\u0045\\u003a'


或者,如果您想要更多的“ \”:

''.join('\\\\u' + x.encode('utf_16_be').encode('hex') for x in u'MESSAGE:')
# output: '\\\\u004d\\\\u0045\\\\u0053\\\\u0053\\\\u0041\\\\u0047\\\\u0045\\\\u003a'
print _
# output: \\u004d\\u0045\\u0053\\u0053\\u0041\\u0047\\u0045\\u003a


如果您绝对需要大写的十六进制代码:

''.join('\\u' + x.encode('utf_16_be').encode('hex').upper() for x in u'MESSAGE:')
# output: '\\u004D\\u0045\\u0053\\u0053\\u0041\\u0047\\u0045\\u003A'

关于python - 从字符串中获取转义的unicode代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27432656/

10-11 22:26
查看更多