《Python参考手册(第4版•修订版)》——2.4 字符串字面量

2.4 字符串字面量

字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号(')、双引号(")或三引号('''或""")中。这三种引号形式在语义上没有差别,但要求在字符串开始和结尾使用的引号类型必须相同。置于单引号和双引号中的字符串必须定义在一行上,而三引号的字符串可以分布在多行上,并且会将所有格式符号(即换行符、制表符、空格等)包含在内。像"hello" 'world'这样的相邻字符串(由空格、换行符或续行符隔开)将被连接起来,形成一个字符串"helloworld"。

在字符串字面量中,反斜杠(\)字符用于转义特殊字符,如换行符、反斜杠本身、引号和非打印字符。表2-1列出了可识别的一些转义码。无法识别的转义符序列将保持原样,包括最前面的反斜杠在内。

转义码\OOO和\x用于将字符嵌入到很难输入的字符串字面量(如控制码、非打印字符、符号、国际字符等)中。对于这些转义码,你必须指定对应于字符值的整数值。例如,若要输入单词Jalapeño的字符串字面量,可以输入"Jalape\xf1o",其中的\xf1就是ñ的字符代码。

在Python 2中,字符串字面量对应于8位字符或面向字节的数据。这种字符串有一个很严重的缺陷,即它们无法完全支持国际字符集和Unicode。为了解决这个问题,Python 2对Unicode数据使用了单独的字符串类型。要输入Unicode字符串字面量,应在第一个引号前加上前缀"u",例如:

s = u"Jalape\u00f1o"

在Python 3中不必加这个前缀字符(而且如果加上会算作语法错误),因为所有字符串已经使用了Unicode编码。如果使用-U选项运行解释器,Python 2将会模拟这种行为。(即所有字符串字面量将被作为Unicode字符对待,u前缀可以省略。)

无论你使用哪个Python版本,表2-1中的\u、\U和\N转义码都可用于在Unicode字面量中插入任意字符。每个Unicode字符都有一个指定的码点(code point),在Unicode字符集中一般表示为U+XXXX,其中XXXX是由4个或更多个十六进制数字表示的序列。(注意,这种表示法并非Python语法,但作者们在描述Unicode字符时经常使用它。)例如,字符ñ的码点是U+00F1。\u转义码用于插入码点范围在U+0000和U+FFFF之间的Unicode字符(如\u00f1)。\U转义码用于插入码点范围在U+10000及以上的字符(如\U00012345)。使用\U转义码时请注意,码点在U+10000以上的Unicode字符通常被分解为一对字符,称为代理编码对(surrogate pair)。这与Unicode字符串的内部表示有关,第3章将会对此进行更详细的介绍。

Unicode字符还有一个描述性名称。如果知道名称,就可以使用\N{字符名称}转义序列,例如:

s = u"Jalape\N{LATIN SMALL LETTER N WITH TILDE}o"

关于码点和字符名称的权威性参考,请参阅http://www.unicode.org/charts。

另外,可以在字符串字面量前面加上r或R,如r'\d'。这些字符串称为原始字符串,因为其中所有的转义字符都会原封不动地保留,也就是说,这种字符串包含的文本只表示其字面上的含义,包括反斜杠在内。原始字符串的主要用途是指定其中反斜杠字符是有实际含义的字面量。例如,指定配合re模块一起使用的正则表达式,或者Windows计算机上的一个文件名(如r'c:\newdata \tests')。

原始字符串不能以单个反斜杠结尾,如r"\"。在原始字符串中,如果前面\字符的数量是奇数个,\uXXXX转义序列仍然会解释为Unicode字符。例如,ur"\u1234"定义的是包含单个字符U+1234的原始Unicode字符串,而ur"\u1234"定义的则是包含7个字符的字符串,其中前两个字符是反斜杠,余下5个字符是字面量"u1234"。此外,如上所示,在Python 2.2中,r必须出现在原始Unicode字符串中的u之后。在Python 3.0中,u前缀是可选的。

不能使用对应于UTF-8或UTF-16等数据编码的原始字节序列来定义字符串字面量。例如,直接输入像'Jalape\xc3\xblo'这样的原始UTF-8编码字符串,将会产生一个9个字符的字符串U+004A、U+0061、U+006C、U+0061、U+0070、U+0065、U+00C3、U+00B1、U+006F,这可能不是你想要的结果。因为在UTF-8中,多字节序列\xc3\xb1代表一个字符U+00F1,而不是两个字符U+00C3和U+00B1。要将一个已编码的字节字符串指定为字面量,在第一个引号前加上"b",即b"Jalape\xc3\xblo"。这样才能从字面上创建一个单字节的字符串。我们可以使用decode()方法解码字节字面量的值,将这种表示法的字节字面量转换为一个普通的字符串。关于这方面的更多细节,将在第3章和第4章中介绍。

字节字面量在大多数程序中都极少使用,因为这种语法直到Python 2.6才出现,而且在该版本中,字节字面量和普通字符串之间没有差别。但在Python 3中,字节字面量变成了与普通字符串不同的新的bytes数据类型(参见附录A)。

时间: 2024-08-03 13:46:24

《Python参考手册(第4版•修订版)》——2.4 字符串字面量的相关文章

《Python参考手册(第4版•修订版)》——导读

前 言 本书是Python编程语言的一份简明参考.尽管有经验的程序员也可以通过本书学习Python语言,但本书并不是一本讲述如何编程的全面教程或专著.相反,本书的目标是准确而简练地介绍Python语言核心以及Python库中最关键的部分.本书假定读者以前拥有Python或其他语言(如C或Java)的编程经验.另外,对系统编程(例如基本的操作系统概念和网络编程)有大致的了解对理解Python库参考中的部分章节可能会有一定的帮助. 本书的这一版是在Python发展的关键时刻面世的.Python 2.

《Python参考手册(第4版•修订版)》——1.5 字符串

1.5 字符串 要创建一个字符串字面量,将字符串放在单引号.双引号或三引号中即可,如下所示: a = "Hello World" b = 'Python is groovy' c = """Computer says 'No'""" 字符串前后使用的引号必须是对应匹配的.两个三引号之间出现的所有文本都视为字符串的内容,而使用单引号和双引号指定的字符串必须在一个逻辑行上.当字符串字面量的内容需放在多个文本行上时,三引号字符串就很

《Python参考手册(第4版•修订版)》——2.6 运算符、分隔符及特殊符号

2.6 运算符.分隔符及特殊符号 Python可以识别的运算符有: + - * / // % << >> & | ^ ~ < > <= >= == != <> += -= = /= //= %= *= &= |= ^= >>= <<= 以下标记可以用作表达式.列表.字典和语句不同部分的分隔符: ( ) [ ] { } , : . ` = ; 例如,等号(=)在赋值语句中可用作名称和值之间的分隔符,而逗号(,

《Python参考手册(第4版•修订版)》——2.9 源代码编码

2.9 源代码编码 编写Python源程序时一般使用标准的7位ASCII码.但是,在Unicode环境中工作的用户可能会发现这很别扭--特别是当他们必须使用国际字符编写大量字符串字面量时. 只需在Python程序的第1行或第2行中包含一个特殊的编码注释,就可以使用不同的编码编写Python源代码: #!/usr/bin/env python # -- coding: UTF-8 -- s = "Jalapeño" # 引号中的字符串直接使用UTF-8编码. 程序中包含特殊的coding

《Python参考手册(第4版•修订版)》——第2章 词法约定和语法 2.1 行结构和缩进

第2章 词法约定和语法 本章介绍Python程序的词法和语法约定.本章涉及的主题包括行结构.语句分组.保留字.字面量.运算符.标记和源代码编码. 2.1 行结构和缩进 程序中的每条语句都以换行符结束.使用续行符(\)可将长语句分为几行,如下所示: a = math.cos(3 * (x - n)) + \ math.sin(3 * (y - n)) 三引号字符串.列表.元组或字典的定义如果跨越多行,是可以不使用续行符的.一般来说,包含在圆括号(...).方括号[...].大括号{...}或三引号

《Python参考手册(第4版•修订版)》——2.3 数字字面量

2.3 数字字面量 内置的数字字面量分为4种类型: 布尔值 整数 浮点数 复数 标识符True和False会被解释为布尔值,其整数值分别是1和0.像1234这样的数字会被解释为十进制整数.要使用八进制.十六进制或二进制指定整数,可以在值的前面分别加上0.0x或0b(如0644.0x100fea8或0b11101010). 在Python中,整数的位数是任意的,所以,如果要指定一个非常大的整数,只需写出所有位数,如1234568901234567890.但是在检查值和查看过去的Python代码时,

《Python参考手册(第4版•修订版)》——第一部分 Python语言 第1章 Python简介 1.1 运行Python

第一部分 Python语言 本部分内容 第1章 Python简介 第2章 词汇和语法约定 第3章 类型与对象 第4章 运算符与表达式 第5章 程序结构与控制流 第6章 函数与函数编程 第7章 类与面向对象编程 第8章 模块.包与分发 第9章 输入与输出 第10章 执行环境 第11章 测试.调试.探查与调优 第1章 Python简介 本章将快速介绍Python这门语言,目标是在阐明Python的大部分基本特性的同时,又不会太过纠缠于特殊的规则或细节.为此,本章简要讲述一些基本概念,如变量.表达式.

《Python参考手册(第4版•修订版)》——1.10 迭代与循环

1.10 迭代与循环 最常用的循环结构是for语句,它可以用来对容器成员进行迭代操作.迭代是Python中内涵最丰富的功能之一.但最常见的迭代形式是简单循环访问一个序列(如字符串.列表或元组)的所有成员,例如: for n in [1,2,3,4,5,6,7,8,9]: print "2 to the %d power is %d" % (n, 2**n) 在这个例子中,每次迭代都会将列表[1,2,3,4,...,9]中的下一个值赋给变量n.因为在整数范围内执行循环十分常见,为此经常会

《Python参考手册(第4版•修订版)》——1.13 协程

1.13 协程 通常,函数运行时要使用单一的一组输入参数.但是,函数也可以编写成一个任务程序, 用来处理发送给它的一系列输入.这类函数被称为协程,它是通过将yield语句作为表达式(yield)的形式创建的,如下所示: def print_matches(matchtext): print "Looking for",matchtext while True: line = (yield) # 获得一行文本 if matchtext in line: print line 要使用这个函