伪·从零开始学Python-数据类型-字符串

我本以为这个号会变成周更……

结果今天又发了一篇文章~

本小节起,我们约定:在展示代码时,以下格式表示在Python Shell中输入。

>>> 输入代码

... 继续代码

输出代码

基本介绍

字符串(str)是表示文本的数据类型,可以有一个或多个Unicode字符。

字符串需要用单引号(')或双引号(")包住(注意是英文状态下的不分左右的引号)。至于具体的区别,如果字符串中包含单引号,最好使用双引号包住;如果字符串中包含双引号,最好使用单引号包住。

"It's excited! "

'He said: "Hello!" '

转义

如果一个字符串中两种引号都有,怎么办?这就要用到Python的转义字符了。在需要转义的符号前面加上反斜杠(\),就能解决问题。你甚至可以在字符串内所有的引号都使用转义,虽然这样做非常不专业。

'"It\'s excited!" said him. '

"\"It's excited!\" said him. "

'\"It\'s excited!\" said him. '

但是,如果你直接在Python Shell中输入上面的字符串,按回车,它只会直接输出和输入相同的字符;但是,如果你使用print函数打印字符串,就能输出预想的字符了。

字符串转义使用print函数

转义可以用在很多方面,比如换行、制表符。

我们可以看下面一个比较极端的例子:

print('2018-01-01\tbiaos\bzhifu\53\n2018-01-02\t\N\u86c7\\\n2018-01-03\tPython\r2018-01-04\t\U0001F602')

输出结果如下(由于各终端对字符的支持不一样,因此举几个例子):

(Deepin Linux 深度终端,使用Noto Mono字体)

2018-01-01biaozhifu+

2018-01-02蟒蛇\

2018-01-04thon

(通过Windows 10上的PuTTY连接的CentOS 7,使用Inziu IosevkaCC SC字体,其中的表情只显示了半个脸)

2018-01-01 biaozhifu+

2018-01-02 蟒蛇\

2018-01-04 ython

(Windows 10上的PowerShell,使用Inziu IosevkaCC SC字体,其中的表情显示为两个方框;在Atom中使用platformio-ide-terimal插件调用PowerShell时,可以正常显示)

2018-01-01 biaozhifu+

2018-01-02 蟒蛇\

2018-01-04 on

(Windows 10 上的PyCharm 2017.3.4,使用Inziu IosevkaCC SC字体)

2018-01-01biaozhifu+

2018-01-02蟒蛇\

2018-01-04

两个表情的异常显示情况

此外还有一种情况:如果字符串非常长的时候,可以使用`\`后面另起一行继续:

print('Hello \

World')

输出结果为“Hello World”。

有时候一个字符串可能会用到大量的反斜杠,严重影响视觉。这时候我们可以在字符串的前面加上r或者是R,表示字符串内的文本不转义。

>>> print('C:\name\bag\test.py')

C:

amagest.py

>>> print('C:\\name\\bag\\test.py')

C:\name\bag\test.py

>>> print(r'C:\name\bag\test.py')

C:\name\bag\test.py

但是,遇到字符串包含与包围字符串的引号相同的引号的时候,无解。有意思的是,如果这种情况下不加反斜杠,会报错;加了反斜杠,它会连同反斜杠也输出来。

不转义的有趣情况

多行文本

此外,Python还可以使用前后三个单引号或双引号(两边的引号类型要一致)的形式直接显示多行字符串(单行也可以),不需要在换行处加`\n`。在其中仍然可以使用转义,但一个或两个出现的引号不用转义。

print('''"It's excited!\U0001F602" said him. ''')

print("""春眠不觉晓

处处闻啼鸟

夜来风雨声

花落知多少""")

输出结果:

"It's excited!" said him.

春眠不觉晓

处处闻啼鸟

夜来风雨声

花落知多少

实际上,单独使用这样的多行文本可以当作Python里面的多行注释。在很多代码中都是这样(这时候就不需要考虑转义的问题了)。

多行注释

参考资料

0.1节

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180323A11IUV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券