我对python3中的字符串转换有一个小问题。
s = '\x001\x002\x001\x000\x005\x005\x000\x004\x000\x000\x00'
print(s)->给出输出:
1 2 1 0 5 5 0 4 0 0
但是,当我尝试使用以下方法转换字符串时:
bytes(s, 'utf16').decode('utf16')
,我得到的是'\ x001 \ x002 \ x001 \ x000 \ x005 \ x005 \ x000 \ x004 \ x000 \ x000 \ x00'。
以编程方式获得与印刷品相同的输出的方式是什么?
在第一个示例中,您打印字符串s
,控制台将忽略\x00
。你做一个print(s)
。
在最后一行,您从python提示符下获取字符串。如果您打印它:print(bytes(s,'utf-16').decode('utf-16'))
,您将得到想要的。
因此,Python提示符会向您显示具有上下文的变量(例如,您还会看到'
符号),而不是字符串的真实表示(与一起显示print
)。
附录:
print
将在其参数中打印字符串,最终调用str()
以将参数转换为字符串。但是python提示会打印变量的表示形式(用表示repr()
。因此,您可以print(repr(bytes(s,'utf-16').decode('utf-16')))
获取在python交互式会话中获得的相同字符串,但可以是字符串。代替打印,您可以分配此类函数(r = repr(bytes(...).decode(...))
,所以有r[0]
is '
,r[1]
is\
等
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句