Jersing 发表于 2020-9-8 10:51

python2.7.18版本 转义字符的问题

在学习的时候碰到这么一个问题,代码如下
#coding:utf-8
s1 = '\'hello, world!\''
s2 = '\n\\hello, world!\\\n'
print(s1,s2)
输出结果为
("'hello, world!'", '\n\\hello, world!\\\n')
然后我把他们分别打印
#coding:utf-8
s1 = '\'hello, world!\''
s2 = '\n\\hello, world!\\\n'
print(s1)
print(s2)
结果又正常了
'hello, world!'
\hello, world!\
然后我做了一个尝试,在print后面加一个逗号,多输出一个空字符
#coding:utf-8
s1 = '\'hello, world!\''
s2 = '\n\\hello, world!\\\n'
print(s1)
print(s2,)
结果s2的转义字符就不被识别了

'hello, world!'
('\n\\hello, world!\\\n',)
然后我就想到,那以后岂不是得一个个输出?
搜了许多资料好像没人有这个问题,希望各位大神能帮我解决解决{:1_907:}


















bluerabbit 发表于 2020-9-8 11:20

2.7 版都不支持了,楼主为什么不用 python 3 现在应该是 3.7 吧

niuyufeng 发表于 2020-9-8 11:29

本帖最后由 niuyufeng 于 2020-9-8 11:34 编辑

因为 print 在 2.x 中 是不带括号的。 你带上括号,就成了 print 一个 tuple.
正确的写法是
print s1
print s2

或者 加上一句 from __future__ import print_function 这样后面就可以用带括号的print 函数了

另外建议学习3.x
2.x中的字符串是 单字节字符串,unicode 写法是 u'string',处理中文时会有各种坑,
3.x中的字符串已经变成 双字节字符串,bytes 写法是 b'bytes' .

rsnodame 发表于 2020-9-8 14:44

支持楼上的解释。已经完全没必要从python2入门了

幻世混沌 发表于 2020-9-19 23:46

这个就比较简单了   将模块内将Python2语法转化为Python3语法,导包如下from __future__ import print_function, unicode_literal, absolute_import, division
#上面4个函数分别表示对Python3 中的print支持, unicode编码支持, 导包顺序支持, 除法支持
页: [1]
查看完整版本: python2.7.18版本 转义字符的问题