字符串和字符串类型
字符串就是字符的序列,一种数据对象,其类型成为字符串类型,类型名字为str。
如图:
a = 'hello world'
print(type(a))
//其输出结果为<class 'str'>
这里提一下单双引号,在python中单双引号的作用相同,但要配对,不能一个单引号加一个双引号。
'aaaaa"//此用法错误
'aaaaa'//正确用法
"aaaaa"//正确用法
这两种形式的限制是在一个字符串字面量中间不能换行,因此只适合描述比较短的字符串。如果在一个字符串没写完时换行,即没出现表示结束的第二个引号,将会出现语法错误报告 SyntaxError: EOL while scanning string literal,意为扫描字符串字面量的过程中遇到了换行(EOL, end of line)。
如果遇到需要写入长字符串,有两种方法,这里仅介绍简单的一种——使用一对连续的三个单引号或双引号作为字符串括号。
'''
aaaaaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaaa
'''
"""aaaaaaaaaaaaa
aaaaaaaaaaaaaaa
aaaaaaaaaaaa"""
//这种形式的字符串,可在描述中进行换行,无论你将其拆成几行字符,解释器输出的是一个字符串
特殊字符
有些字符无法用普通字符形式写出,比如换行符 \n 。为了能在字符串里写这些字符,Python规定了一组特殊描述方式,下表是几个常用的特殊字符的写法及解释:
字符 | 解释 |
---|---|
\’ | 单引号 |
\" | 双引号 |
\t | 制表符 |
\n | 换行符 |
\\ | 反斜线符 |
这种写法称为换意序列,用反斜线符表示后面字符的意义换了。下面展示换意序列的用处:
'I don't understand'
//可以看出由于存在三个单引号的原因,字符串无法表达我们真正的意图,字符串在第二个引号处就已经中断了,即无法正确表示出don't
'I don\'t understand'
//使用换意序列 \' 后,该字符串的输出结果为I don't understand
字符串操作
字符串运算
在字符串中,我们从左至右数并非从1开始,而是从0开始。
//以下操作并不会产生任何结果,如需看到结果,将下列操作放入print()中即可
a = 'hello world'
a[0] // 0指向第一位,这是计算机语言中通用的,也就是指向h,输出结果为h
a[-1] // -1指向最后一位,输出结果为d
a[3] //从左向右数第(3+1)位,如果是a[n],即为指向(n+1)位,输出结果为l
a[-3] //从右向左数第三位,输出结果为r
a[13] //当我们取字符超过字符串长度时,就会发生超范围访问,即为下标越界(index out of range),解释器直接报错
显然,取字符只能在具体字符串的范围进行。
注意:python语言无独立的字符概念,只有字符串,通过下表取字符,即上述代码块的操作,得到的实际上是只包含一个字符的字符串。
我们可用len()来获取字符串长度(length),
a = 'helloworld'
print(len(a))
//输出结果为10
拼接
主要有两种,加法和乘法。
'hello' + ' ' + 'world'
//输出结果为'hello world'
'ok!' * 3
//输出结果为'ok!ok!ok!'
3 * 'ok!'
//输出结果同上
字符串切片
通过下标读取字符串还可同时读取多个字符,我们称之为切片
a[start:stop:count]:start表示开始读取,stop表示停止读取,count表示间隔个数读取,如果count位置为-1,则意味着倒序,count可省略不写,默认为1。切片描述中必须包含冒号。
a = 'hello world'
a[1:3] //从左至右读取二到四位字符,输出结果为ell
a[8:-2] //读取从左至右第九位到从右至左第二位,输出结果为rl
a[0:5:2] //从左至右每两个字符读取一次,输出结果为sat
a[::-1] //倒序,输出结果为dlrow olleh,同理,count为-2则为每两个读取一次,输出结果为drwolh
a[-1:-5:-1] //倒序,输出结果为dlrow
注意事项
- 在切片操作中,我们将下标取值超过字符串长度,不会出现错误报告,超出的部分只会输出结果为空。
- 在**a[start:stop]**中,start ≥ stop则得到一个空值;
- 在**a[start:stop:count]**中,当count为正数且start ≥ stop 或者 count为负数且stop ≥ start 时,都会得到一个空字符串。
字符串的常用方法
- endswith() 是否以xx结尾
- startswith() 是否以xx开头
- find(sub,[start, [end]]) 返回值是字符的索引,不存在是返回-1
- isalnum() 是否是字母和数字组成
- isalpha() 是否是字母
- isdigit() 是否是数字
- islower() 是否全部小写
- isupper() 是否全部大写
- lower() 转小写
- upper() 转大写
- swapcase() 大小写相互转换
- title() 每个单词首字母变大写
- strip() 去除左右两边空白
- rstrip() 去除右边空白
- lstrip() 去除左边空白
- replace() 替换
- split() 切割
- join() 拼接,a.join(b)是a插入b当中去,而非b插入a当中去。
- count() 统计字符数量
- len() 获取长度
- index() 获取字符索引
下图显示以上常用方法用法
关于字符串的方法还有很多,可通过dir(str)命令查看
上面三图是利用jupyter做的,网上有教程,这里不做赘述。感兴趣的可以去搜。