(一)字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ' 或 " ) 来创建字符串。顾名思义,羊肉串是由羊肉做成的串,而字符串就是由字符组成的。 字符串的本质是:字符序列。
2
Python
不支持单字符类型,单字符也是作为一个字符串使用的。创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
var2 = "Python"
Python
的字符串是不可变的,我们无法对原字符串做任何修改。但可以将字符串的一部分复制到新创建的字符串,达到 “看起来修改
”
的效果。
(二)字符串的编码
Python3
直接支持
Unicode
,可以表示世界上任何书面语言的字 符。Python3
的字符默认就是
16
位
Unicode
编码,ASCII码是 Unicode编码的子集。
转换技巧:
使用内置函数ord()可以把字符转换成对应的Unicode码;使用内置函数chr()可以把十进制数字转换成对应的字符;
print(ord('A')) #65
print(ord('成')) #25104
print(chr(66)) #'B'
print(ord('龙') )#40857
(三)引号创建字符串
我们可以通过 ①单引号或双引号创建字符串。例如:
a='abc'
b="sxt"
使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:
a = "I'm a teacher!"
print(a) #I'm a teacher!
b = 'my_name is "Jackie Chan"'
print(b) #my_name is "Jackie Chan"
② 连续三个单引号或三个双引号,可以帮助我们创建多行字符串。在 长字符串中会保留原始的格式。例如:
(四)空字符串和len()函数
Python
允许空字符串的存在,不包含任何字符且长度为
0
。例如:
c = ''
print(len(c)) #结果:0
其中,len()
用于计算字符串含有多少字符。
(五)转义字符
我们可以使用
\+特殊字符
,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
\xyy | 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
【操作】测试转义字符的使用
代码
a = 'I\nlove\bU'
print(a)
print('a\rabb\\cc')
(六)Python字符串运算符
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | >>>a + b 'HelloPython' |
* | 重复输出字符串 | >>>a * 2 'HelloHello' |
[] | 通过索引获取字符串中字符 | >>>a[1] 'e' |
[ : ] | 截取字符串中的一部分 | >>>a[1:4] 'ell' |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | >>>"H" in a True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | >>>"M" not in a True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | >>>print r'\n' \n >>> print R'\n' \n |
% | 格式字符串 | 请看下一章节 |
具体代码
a = "Hello"
b = "Python"
print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])
if ("H" in a):
print( "H 在变量 a 中")
else:
print( "H 不在变量 a 中")
if ("M" not in a):
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
print(r'\n')
print(R'\n')
运行效果:
字符串拼接 :可以使用
+
将多个字符串拼接起来。例如:
’aa’+ ’bb’
结果 是
’aabb’
-
如果 + 两边都是字符串,则拼接。
-
如果 + 两边都是数字,则加法运算
-
如果 + 两边类型不同,则抛出异常
可以将多个字面字符串直接放到一起实现拼接。例如: ’aa’’bb’ 结果是 ’aabb’
a = 'sxt'+'qiqi' #结果是:'sxtqiqi'
b = 'sxt''qiqi' #结果是:'sxtqiqi'
(七)字符串切片slice操作
切片
slice
操作可以让我们快速的提取子字符串。标准格式为:
[起始偏移量start:终止偏移量end:步长step]
操作和说明 | 示例 | 结果 |
[:] 提取整个字符串 | “abcdef”[:] | “abcdef” |
[start:] 从start索引开始到结尾 | “abcdef”[2:] | “cdef” |
[:end] 从头开始知道end-1 | “abcdef”[:2] | “ab” |
[start:end] 从start到end-1 | “abcdef”[2:4] | “cd” |
[start:end:step] 从start提取到end-1,步长是step | “abcdef”[1:5:2] | “bd” |
示例 | 说明 | 结果 |
"abcdefghijklmnopqrstuvwxyz"
[-3:]
| 倒数三个 | “xyz” |
"abcdefghijklmnopqrstuvwxyz"
[-8:-3]
|
倒数第八个到倒数第三个(
包头不包尾
)
| 'stuvw' |
"abcdefghijklmnopqrstuvwxyz"
[::-1]
|
步长为负,从右到左反向提取
| 'zyxwvutsrqponmlkjihgfedcba' |
注意:切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1。例如:
(八)split()分割和join()合并
split()
可以基于指定分隔符将字符串分隔成多个子字符串
(
存储到列 表中)
。如果不指定分隔符,则默认使用空白字符
(
换行符
/
空格
/
制表符)
。示例代码如下:
a = "to be or not to be"
print(a.split())
print(a.split('be'))
运行效果:
join()
的作用和
split()
作用刚好相反,用于将一系列子字符串连接起
来。示例代码如下:
a = ['sxt','sxt100','sxt200']
print('*'.join(a))
运行效果:
总结:
拼接字符串要点:使用字符串拼接符 + ,会生成新的字符串对象,因此不推荐使 用 + 来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字 符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
(九) 字符串常用方法汇总
字符串有很多常用的方法,我们需要熟悉。我们通过表格将这些方 法汇总起来,方便大家查阅。希望大家针对每个方法都做一次测试。
我们以一段文本作为测试:
a='''ablchbjj '''
方法和使用示例 | 说明 | 结果 |
len(a) | 字符串长度 | 8 |
a.startswith('abl') | 以指定字符串开头 | True |
a.endswith('jj') | 以指定字符串结尾 | True |
a.find('b') | 第一次出现指定字符串的位置 | 1 |
a.rfind('b') | 最后一次出现指定字符串的位置 | 5 |
a.count("lch") | 指定字符串出现了几次 | 1 |
a.isalnum() | 所有字符全是字母或数字 | True |