目录
1、字符串定义
字符串是一个有序的字符的集合,用于在计算机中存储和表示文本信息。
1.1、创建字符串
我们可以通过单引号或双引号创建字符串。
适应两种引号的好处是可以创建本身就包含引号的字符串,而不使用转移字符,例如
a = "Hello,my name is cat,golden king"
print(a)
b = 'my name is "tom"'
print(b)
连续三个单引号或三个引号,可以帮助我们创建多行字符串。例如
info = '''name="IT.cat"
company="cat" age=18
lover="Alex"'''
print(info)
1.2、空字符串和len()函数
Python允许空字符串的存在,不包含任何字符且长度为0.例如
a = ''
print(len(a))
len用来计算字符串的长度或项目个数(含空格),返回值为结果。如
a = ''
print(len(a))
b = 'acc yyzz'
print(len(b))
c = ['1','2','3']
print(len(c))
d = {'a':1,'b':2}
print(len(d))
1.3、转义字符
我们可以使用"+特殊字符",实现某些难以用字符表示的效果,比如:换行等。常见的
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
’ | 单引号 |
" | 双引号 |
\b | 退格(Backspace) |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
转义字符的使用
a = 'i\nlove\nyou'
print(a)
print('aaaaa\
vvvvv')
1.4、字符串拼接
1、可以使用+将多个字符串拼接起来。例如:'aa'+'bb'==>'aabb'
(1)如果+两边都是字符串,则拼接
(2)如果+两边都是数字,则假发运算
(3)如果+两边类型不同,则抛出异常
2、可以将多个字面字符串直接放到一起实现拼接。例如:'aa''bb'==>'aabb'
字符串拼接操作
a='abc'+'123'
print(a)
b='aaa''bbb'
print(b)
1.5、字符串复制
使用*可以实现字符串复制
a='abc '*3
print(a)
1.6、不换行打印
前面调用print时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行符。我们可以自己动过参数end="任意字符串"。实现末尾添加任何内容:
print("i",end=" ")
print("am",end=" ")
print("TOM",end="--")
print("good")
1.7、从控制台读取字符串
我们可以使用input()从控制台读取键盘输入的内容
a=input("请输入姓名:")
print(a)
2、str()实现数字转型字符串
str()可以帮助我们将其他数据类型转换为字符串。例如
a = int(123456) #这里的a很明显是整型
print(a[0]) #按字符型截取第1个数字
很明显报错
a = int(123456) #这里的a很明显是整型
a = str(a) #将a定义为字符串
print(a[0])
当我们调用print()函数时,解释器自动调用str()将非字符串的对象转成了字符串。
3、使用[]提取字符
字符串的本之就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
最左侧第一个字符,偏移量为0,第二个偏移量是1,以此类推,直到len(str)-1为止
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推直到-len(str)为止
a = 'abcdefghijklnmopqrstuvwxyz'
print(a)
print(a[0])
print(a[3])
print(a[26-1]) #-1逆向取数,26就表示逆向取第26个数
print(a[-1]) #反着取第一个数
print(a[-26]) #反着取第26个数,注意这里不能超过字符范围,会报超出rang
4、replace()实现字符替换
字符串是"不可改变"的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。我们尝试改变某个字符,是会报错的。
a = 'abcdefghijklnmopqrstuvwxyz'
a[3] = "TOM"
print(a)
字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建的字符串来实现。
a = 'abcdefghijklnmopqrstuvwxyz'
a = a.replace('c','高')
print(a)
整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串。
5、字符串切片slice操作
切片slice操作可以让我们快速的提取字符串。标准格式为:
[起始偏移量 start:中止偏移量 end:步长 step]
典型操作三个整数如下
操作和说明 | 示例 | 结果 |
[:]提取整个字符串 | "abcdef"[:] | "abcde" |
[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.
#将"to be or not to be"字符串倒叙输出
a = 'to be or not to be'[::-1]
print(a)
#将"sxtsxtsxtsxtsxt"字符串中所有的s输出
a = 'sxtsxtsxtsxtsxtsxt'[0::3]
print(a)
6、split()分割和join()合并
split()可以基于指定分隔符将字符分割成多个字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。示例代码如下
a = 'to be or not to be'
print(a.split())
a = 'to be or not to be'
print(a.split('be'))
join()的作用和split()作用刚好相反,用于将一系列子字符串连接起来,示例代码如下:
a = ['a','b','c','d','e','f']
print(a)
print(''.join(a))
print('-'.join(a))
7、拼接字符串要点
使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join函数,因为join函数再拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
[操作]测试+拼接符和join()。不同的效率
import time
time01 = time.time() #起使时刻
a = ""
for i in range(1000000):
a += "sxt"
time02 = time.time() #终止时刻
print("运算时间:"+str(time02-time01))
time03 = time.time()#起始时间
li = []
for i in range(1000000):
li.append("sxt")
a = "".join(li)
time04 = time.time() #终止时刻
print("运算时间:"+str(time04-time03))
这里还引用了time的模块,分别创立time01,02两个标志位,当执行到time.time()表示开始计数,第二个表示终止。
a +=sxt排序会一次一次的加,而"".join是先加再整体一下子排序,会高效很多
这里也会发现使用"".join会比+运算快5倍速度。