字符串基础
字符串基础
从实用的角度来看,字符串可以用来表示能够编码为文本或字节的任何事物。
字符串字面量
表示 | 示例 |
---|---|
单引号 | ‘spa"m’ |
双引号 | “spa’m” |
三引号 | ‘’’…spam…’’’、"""…spam…""" |
转义序列 | “s\tp\na\om” |
原始字符串 | r"C:\new\test.spm" |
单引号和双引号字符串是一样的
在python字符串周围,单引号和双引号是可以互换的。支持这两种形式的原因是,你不进行反斜杠转义就可以在一种引号的字符串中包含另一种引号。
除了单引号内嵌到字符串中的情形外,我们更加倾向于在字符串周围使用单引号,因为这种形式更加便于阅读。
>>> X = 'abc"d',"abc'd"
>>> X
('abc"d', "abc'd")
>>> Y = 'abc"d' "abc'd"
>>> Y
'abc"dabc\'d'
转义序列代表特殊字符
转义序列让我们能够在字符串中嵌入不容易通过键盘键入的字符。字符\以及字符串字面量中在他后面的一个或多个字符串,在生成的字符串对象中会被单个字面量所替代,这个字符拥有通过转义序列定义的二进制值
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
’ | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy 代表的字符,例如:\o12 代表换行,其中 o 是字母,不是数字 0。 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
原始字符串阻止转义
用转义序列在字符串中嵌入特殊字符串编码是很方便的,然而有时候,为了引入转义字符,而对反斜杠的特殊处理会带来一些麻烦。
filepath = open('C:\new\test.spm')
路径中有一个\n,他会被识别为一个换行字符。这样会使得结果变得难以想象;
为了避免类似的情况的发生,原始字符串就能派上用途。如果字母r(大写或小写)出现在字符串的第一个引号前面,它将会关闭转义机制。
filepath = open(r'C:\new\test.spm')
还有一种方式是使用双斜杠;
filepath = open('C:\\new\\test.spm')
三引号编写多行块字符串
python中还有一种三引号内字符串字面量格式,有时候被称作块字符串,这是一种对编写多行文本数据来说很便捷的语法。
>>> S = '''abcd
... efgh
... ijklnm'''
>>> S
'abcd\nefgh\nijklnm'
>>> print(S)
abcd
efgh
ijklnm
程序会保留被三引号包围的文本,包括位于代码最右边,你认为是注释的文本;
三引号的还可以用作废除一些代码;
实际应用中的字符串
基本操作
操作符 | 描述 |
---|---|
+ | 字符串连接 |
* | 重复输出字符串 |
[] | 通过索引获取字符串中字符 |
[ : ] | 截取字符串中的一部分 |
in | 成员运算符 |
not in | 成员运算符 |
r/R | 原始字符串 - 原始字符串 |
% | 格式字符串 |
索引和切片
因为字符串被定义为字符串的有序集合,所以我们能够通过位置访问它们的元素。
索引(S[i])获取特定偏移量处的元素:
- 第一个元素的偏移量为零;
- 负偏移量索引意味着从结尾或又端反响进行计数;
- S[0]获取第一个元素;
- S[-2]获取倒数第二个元素;
切片(S[i : j])提取序列的连续部分:
- 上界并不包含在内;
- 分片的上界和下界,在缺省时默认为0和序列的长度;
- S[1 : 3]获取从偏移量为1直到但是不包含偏移量为3之间的所有元素;
- S[1 : ]获取从偏移量为1直到末尾之间的所有元素;
- S[ : 3]获取从偏移量为0直到但是不包含偏移量为3之间的所有元素;
- S[ : -1]获取从偏移量为0直到但是不包含最后一个元素之间的所有元素;
- S[ : ]获取所有的元素,实现了对S的顶层复制;
扩展的分片S[i: j : k]接收一个步长k,其默认值为+1:
- 允许跳过元素和反转顺序;
>>> S = 'abcdefg'
>>> S[5:1:-1]
'fedc'
字符串转换工具
>>> int('42'),str(42)
(42,