专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2024-08-14 15:28:30 基础教程 55 ℃

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

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

>>> 输入代码

... 继续代码

输出代码

基本介绍

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

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

"I'm excited! "

'He said: "Hello!" '

转义

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

'"I\'m excited!" said him. '

"\"I'm excited!\" said him. "

'\"I\'m excited!\" said him. '

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

字符串转义使用print函数,其中的“It's”改为“I'm”……

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

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

print('2018-01-01\tbiaos\bzhifu\53\n2018-01-02\t\N{CJK UNIFIED IDEOGRAPH-87D2}\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('''"I'm excited!\U0001F602" said him. ''')

print("""春眠不觉晓

处处闻啼鸟

夜来风雨声

花落知多少""")

输出结果:

"I'm excited!" said him.

春眠不觉晓

处处闻啼鸟

夜来风雨声

花落知多少

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

多行注释

参考资料

0.1节

最近发表
标签列表