探索 Python(3): 探索 Python 类型的层次结构 —— 使用字符串
admin
2023-07-30 22:57:08
0

在本系列的第一篇文章 探索 Python(1): Python 的内置数值类型 中,我介绍了 Python 简单的内置数值数据类型。如果您曾经使用过其他编程语言,那么对这些数据类型可能不会陌生。虽然在那篇文章中没有提及,但是 Python 和许多其他编程语言(诸如 C 或 Java™ 编程语言)之间的一个显著区别是不存在内置字符数据类型。因为处理基于文本的数据是很常见的,所以,您可能想知道 Python 如何处理基于字符的数据。简单来说,Python 通过包括一个不变的基于集合的类来提供一个优秀的解决方案,这个基于集合的类是专门为有效地处理字符序列而设计的。

字符串

在 Python 中创建字符串对象非常容易。只要将所需的文本放入一对引号中,就完成了一个新字符串的创建(参见清单 1)。如果稍加思考的话,您可能会感到有些困惑。毕竟,有两类可以使用的引号:单引号 (‘) 和双引号 (“)。幸运的是,Python 再一次使这种问题迎刃而解。您可以使用任意一类引号来表示 Python 中的字符串,只要引号一致就行。如果字符串是以单引号开始,那么必须以单引号结束,反之亦然。如果不遵循这一规则,则会出现 SyntaxError 异常。

清单 1. 在 Python 中创建字符串

12345678910111213141516 >>> sr=\”Discover Python\”>>> type(sr)<type \’str\’>>>> sr=\’Discover Python\’>>> type(sr)<type \’str\’>>>> sr=\”Discover Python: It\’s Wonderful!\”       >>> sr=\’Discover Python\”  File \”\”, line 1    sr=\’Discover Python\”                        ^SyntaxError: EOL while scanning single-quoted string>>> sr=\”Discover Python: \\... It\’s Wonderful!\”>>> print srDiscover Python: It\’s Wonderful!

从清单 1 中可以看出,除了字符串用适当的引号括起来之外,另外还有两个重要方面。第一,在创建字符串时,您可以混合使用单引号和双引号,只要字符串在开始位置和结束位置使用同一类型的引号。这种灵活性允许 Python 容易地保留常规的文本数据,这些常规的文本数据可能需要使用单引号来表示简写的动词形式或所属关系,以及使用双引号来表示引述文本。

第二,如果字符串用一行表示太长,您可以使用 Python 连续字符:反斜线 ($$ 来对字符串进行折行。从内部机制看,在创建字符串时换行符会被忽略,在打印字符串时可以看出这一点。您可以结合使用这两个功能,来创建包含较长段落的字符串,如清单 2 所示。

清单 2. 创建长字符串

12345678 >>> passage = \’When using the Python programming language, one must proceed \\… with caution. This is because Python is so easy to use and can be so \\… much fun. Failure to follow this warning may lead to shouts of \\… \”WooHoo\” or \”Yowza\”.\’>>> print passageWhen using the Python programming language, one must proceed with caution. This is because Python is so easy to use, and can be so much fun. Failure to follow this warning may lead to shouts of \”WooHoo\” or \”Yowza\”.

编者注:上面的示例已折行处理,这样使页面布局更合理。事实上,它本来显示为一个较长的行。

注意,当打印 passage 字符串时,所有格式将被删除,只保留一个非常 长的字符串。通常,您可以使用控制符来表示字符串中的简单格式。例如,要表示一个新行开始,您可以使用换行控制符 (\\n);要表示插入一个制表符(预设空格数),可以使用制表符控制符 (\\t),如清单 3 所示。

清单 3. 在字符串中使用控制符

123456789101112131415161718 >>> passage=\’\\tWhen using the Python programming language, one must proceed\\n\\… \\twith caution. This is because Python is so easy to use, and\\n\\… \\tcan be so much fun. Failure to follow this warning may lead\\n\\… \\tto shouts of \”WooHoo\” or \”Yowza\”.\’>>> print passage        When using the Python programming language, one must proceed        with caution. This is because Python is so easy to use, and        can be so much fun. Failure to follow this warning may lead        to shouts of \”WooHoo\” or \”Yowza\”.>>> passage=r\’\\tWhen using the Python programming language, one must proceed\\n\\… \\twith caution. This is because Python is so easy to use, and\\n\\… \\tcan be so much fun. Failure to follow this warning may lead\\n\\… \\tto shouts of \”WooHoo\” or \”Yowza\”.\’>>> print passage\\tWhen using the Python programming language, one must proceed\\n\\\\twith caution. This is because Python is so easy to use, and\\n\\\\tcan be so much fun. Failure to follow this warning may lead\\n\\\\tto shouts of \”WooHoo\” or \”Yowza\”.

清单 3 中的第一段按照您预期的方式使用了控制符。该段已具备良好的格式,阅读非常方便。第二个示例虽然也进行了格式化处理,但它引用的是所谓的原始字符串,即没有应用控制符的字符串。您始终可以认出原始字符串,因为该字符串的起始引号的前面有一个 r 字符,它是 raw的缩写。

我不了解您讲的有什么可取之处,虽然这种方法可行,但创建一个段落字符串似乎非常因难。当然一定有更好的方法。与往常一样,Python 提供了一种非常简单的方法用于创建长字符串,该方法可保留创建字符串时所使用的格式。这种方法是使用三个双引号(或三个单引号)来开始和结束长字符串。在该字符串中,您可以使用任意多的单引号和双引号(参见清单 4)。

清单 4. 使用三个引号的字符串

123456789101112 >>> passage = \”\”\”\”_blank\”>探索 Python(1): Python 的内置数值类型 中,我介绍了 Python 简单的内置数值数据类型。如果您曾经使用过其他编程语言,那么对这些数据类型可能不会陌生。虽然在那篇文章中没有提及,但是 Python 和许多其他编程语言(诸如 C 或 Java™ 编程语言)之间的一个显著区别是不存在内置字符数据类型。因为处理基于文本的数据是很常见的,所以,您可能想知道 Python 如何处理基于字符的数据。简单来说,Python 通过包括一个不变的基于集合的类来提供一个优秀的解决方案,这个基于集合的类是专门为有效地处理字符序列而设计的。

字符串

在 Python 中创建字符串对象非常容易。只要将所需的文本放入一对引号中,就完成了一个新字符串的创建(参见清单 1)。如果稍加思考的话,您可能会感到有些困惑。毕竟,有两类可以使用的引号:单引号 (‘) 和双引号 (“)。幸运的是,Python 再一次使这种问题迎刃而解。您可以使用任意一类引号来表示 Python 中的字符串,只要引号一致就行。如果字符串是以单引号开始,那么必须以单引号结束,反之亦然。如果不遵循这一规则,则会出现 SyntaxError 异常。

清单 1. 在 Python 中创建字符串

12345678910111213141516 >>> sr=\”Discover Python\”>>> type(sr)<type \’str\’>>>> sr=\’Discover Python\’>>> type(sr)<type \’str\’>>>> sr=\”Discover Python: It\’s Wonderful!\”       >>> sr=\’Discover Python\”  File \”\”, line 1    sr=\’Discover Python\”                        ^SyntaxError: EOL while scanning single-quoted string>>> sr=\”Discover Python: \\... It\’s Wonderful!\”>>> print srDiscover Python: It\’s Wonderful!

从清单 1 中可以看出,除了字符串用适当的引号括起来之外,另外还有两个重要方面。第一,在创建字符串时,您可以混合使用单引号和双引号,只要字符串在开始位置和结束位置使用同一类型的引号。这种灵活性允许 Python 容易地保留常规的文本数据,这些常规的文本数据可能需要使用单引号来表示简写的动词形式或所属关系,以及使用双引号来表示引述文本。

第二,如果字符串用一行表示太长,您可以使用 Python 连续字符:反斜线 ($$ 来对字符串进行折行。从内部机制看,在创建字符串时换行符会被忽略,在打印字符串时可以看出这一点。您可以结合使用这两个功能,来创建包含较长段落的字符串,如清单 2 所示。

清单 2. 创建长字符串

12345678 >>> passage = \’When using the Python programming language, one must proceed \\… with caution. This is because Python is so easy to use and can be so \\… much fun. Failure to follow this warning may lead to shouts of \\… \”WooHoo\” or \”Yowza\”.\’>>> print passageWhen using the Python programming language, one must proceed with caution. This is because Python is so easy to use, and can be so much fun. Failure to follow this warning may lead to shouts of \”WooHoo\” or \”Yowza\”.

编者注:上面的示例已折行处理,这样使页面布局更合理。事实上,它本来显示为一个较长的行。

注意,当打印 passage 字符串时,所有格式将被删除,只保留一个非常 长的字符串。通常,您可以使用控制符来表示字符串中的简单格式。例如,要表示一个新行开始,您可以使用换行控制符 (\\n);要表示插入一个制表符(预设空格数),可以使用制表符控制符 (\\t),如清单 3 所示。

清单 3. 在字符串中使用控制符

123456789101112131415161718 >>> passage=\’\\tWhen using the Python programming language, one must proceed\\n\\… \\twith caution. This is because Python is so easy to use, and\\n\\… \\tcan be so much fun. Failure to follow this warning may lead\\n\\… \\tto shouts of \”WooHoo\” or \”Yowza\”.\’>>> print passage        When using the Python programming language, one must proceed        with caution. This is because Python is so easy to use, and        can be so much fun. Failure to follow this warning may lead        to shouts of \”WooHoo\” or \”Yowza\”.>>> passage=r\’\\tWhen using the Python programming language, one must proceed\\n\\… \\twith caution. This is because Python is so easy to use, and\\n\\… \\tcan be so much fun. Failure to follow this warning may lead\\n\\… \\tto shouts of \”WooHoo\” or \”Yowza\”.\’>>> print passage\\tWhen using the Python programming language, one must proceed\\n\\\\twith caution. This is because Python is so easy to use, and\\n\\\\tcan be so much fun. Failure to follow this warning may lead\\n\\\\tto shouts of \”WooHoo\” or \”Yowza\”.

清单 3 中的第一段按照您预期的方式使用了控制符。该段已具备良好的格式,阅读非常方便。第二个示例虽然也进行了格式化处理,但它引用的是所谓的原始字符串,即没有应用控制符的字符串。您始终可以认出原始字符串,因为该字符串的起始引号的前面有一个 r 字符,它是 raw的缩写。

我不了解您讲的有什么可取之处,虽然这种方法可行,但创建一个段落字符串似乎非常因难。当然一定有更好的方法。与往常一样,Python 提供了一种非常简单的方法用于创建长字符串,该方法可保留创建字符串时所使用的格式。这种方法是使用三个双引号(或三个单引号)来开始和结束长字符串。在该字符串中,您可以使用任意多的单引号和双引号(参见清单 4)。

清单 4. 使用三个引号的字符串

12345678910

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...