请教python中有个关于转义字符的问题:

如下代码中:s=r"\x"+"44"+r"\x"+"D1"prints,len(s)printlen('\x44\xD1')这里s拼接后得到字符串\x44\xD1,长度是... 如下代码中:
s = r"\x" + "44" + r"\x" + "D1"
print s,len(s)
print len('\x44\xD1')
这里s拼接后得到字符串\x44\xD1,长度是8,而直接len这个字符串长度是2,前者为什么忽略了转义字符?如何使s字符串也是带有转义字符的呢?
我的目的就是把“44D1”这个字符串转换为16进制的字符串,或是直接解析为10进制的数字。如何做呢?
展开
 我来答
盗墓者18
2017-12-01 · TA获得超过2028个赞
知道小有建树答主
回答量:820
采纳率:84%
帮助的人:258万
展开全部

最根本的原因还是r的用法。
字符串前面加入r则表示为原始字符串,防止字符串内的所有特殊字符发挥作用。
比如输出helloworld,这里的\n并没发挥作用:



而像'xx',直接用引号包裹住的,里面的字符默认是什么就是什么,该转义就转义,该格式化就格式化。
比如上面的print('hello\nworld'),输出结果:



而你这里的r'\x'作拼接,在拼接完成之前就已经对'\x'防止过了,再拼接时转义符\又发挥作用了。

\x44\xD1是python2编码问题无法正常显示字符(比如中文),用python3是可以正常显示的。让s转为有特殊意义的字符串,没有任何意义,以后开发也根本用不到

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式