Python打卡四——字符串讲解

Python打卡(四)

字符串讲解

1、字符串的基本特点

字符串的本质是字符序列。Python中的字符串是不可变的,我们无法对原字符串做任何修改,但是,我们可以将字符串的一部分复制到新创建的字符串中,达到看起来修改的样子。
Python中字符串是一种基本类型,在Python中没有字符,即使是单个字符也是一个字符串。

2、字符串的编码

Python3中采用Unicode编码,可以表示世界上任何书面语言的字符,即采用16位Unicode编码,ASCII码是Unicode编码的自己。以下两个函数可以进行相互之间的转换:

>>>ord('A') #使用内置函数ord()可以把字符转换成对应的Unicode码
65
>>>ord('高')
39640
>>>chr(66)   #使用内置函数chr()可以把十进制数字转换成对应的字符
'B'

3、引用创建字符串

我们可以使用单引号或者双引号创建字符串。

>>>a = "abcdefghijklmnopq"
>>>print(a)
abcdefghijklmnopq
>>>b = 'abcdefghijklmnopq'
>>>print(b)
abcdefghijklmnopq
>>>c = "I'm a teacher"   #如果字符串中含有单引号则使用双引号创建字符串
>>>print(c)
I'm a teacher
>>>d = 'My name is "TOM"'
>>>print(d)
My name is "TOM"
>>>resume = '''name = "TOM"
company = "美团"  age = 21
lover = "MOM"'''
#用连续三个单引号或者连续三个双引号可以创建多行字符串
>>>print(resume)
name = "TOM"\ncompany = "美团"  age = 21\nlover = "MOM"

4、空字符串和len()函数

Python中允许空字符串的存在, 不包含任何字符且长度为0。使用len()函数可以计算字符串的长度。例如:

>>>a = ''
>>>len(a)
0
>>>b = 'hjk影'
>>>len(b)
4   #汉字和英文字符地位一样,都代表一个字符

5、转义字符

Python打卡四——字符串讲解_第1张图片
6、字符串拼接

(1)可以使用+将多个字符串拼接起来。
————如果+两边都是字符串,则拼接。
————如果+两边都是数字,则加法运算。
————如果+两边类型不同,则抛出异常。
(2)可以将多个字符串直接放到一起实现拼接,多个字符串之间使用空格分开即可。

>>>a = 'sxt'+'gaoqi'
>>>print(a)
sxtgaoqi
>>>b = 'sxt' 'gaoqi'
>>>print(b)
sxtgaoqi
>>>c = 3 + 4
>>>print(c)
7
>>>d = 3 + 'a'
Error

7、字符串复制

使用*可以实现字符串的复制。例如:

>>>a = 'Sxt'*3
>>>print(a)
'SxtSxtSxt'

8、不换行打印

Python中在调用print函数时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行符。我们可以通过使用end=“任意字符串”实现末尾添加任何内容:

print("sxt",end=' ')
print("gaoqi",end='###'print('bang')

#执行结果如下:
sxt gaoqi###bang

9、从控制台读取字符串

可以使用input()从控制台读取键盘输入的内容:

>>>myname = input("请输入名字:")   #此处进程处于阻塞等待状态
请输入名字:肉骨茶
>>>print(myname)
肉骨茶

10、str()函数

str()函数用来将其他数据类型转换为字符串。当我们调用print()函数时,解释器自动调用了str()将非字符串的对象转换成了字符串。
str()用法;

>>>str(5.20)
'5.2'
>>>str(314)
'314'
>>>str(3,14e2)
'314.0'
>>>str(True)
'True'	

11、使用[ ]提取字符

在Python中我们可以通过在字符串后面添加[ ]在[ ]里面指定偏移量,可以提取该位置的单个字符。
(1)正向搜索:最左边第一个字符,偏移量是0,第二个偏移量是1,以此类推,直到len(str)-1为止。
(2)反向搜索:最右边第一个字符,偏移量是-1,倒数第二个的偏移量是-2,以此类推,直到-len(str)为止。

>>>a = 'abcdefghijklmnopqrstuvwxyz'
>>>print(a)
abcdefghijklmnopqrstuvwxyz
>>>a[0]
'a'
>>>a[26-1]
'z'
>>>a[-1]
'z'
>>>a[-26]
'a'
>>>a[-27]
Error
>>>a[26]
Error

12、replace()实现字符串替换

在Python中字符串是“不可改变的”,我们可以通过[ ]获取字符串指定位置的字符,但是我们不可以改变字符串,我们尝试改变字符串中某个字符,会报错,例如:

>>>a = 'abcdefghijklmnopqrstuvwxyz'
>>>a
'abcdefghijklmnopqrstuvwxyz'
>>>a[3] = '高'
Error

但是我们可以使用replace()替换某个字符,但其本质是创建一个新的字符串来实现。

>>>a = 'abcdefghijklmnopqrstuvwxyz'
>>>a
'abcdefghijklmnopqrstuvwxyz'
>>>a = a.replace('c','高'>>>a
'ab高defghijklmnopqrstuvwxyz'

Python打卡四——字符串讲解_第2张图片

13、字符串切片

切片操作可以让我们快速提取字符串,其标准格式是:
[其实偏移量start:终止偏移量end:步长step]
其典型的操作有如下几种:
Python打卡四——字符串讲解_第3张图片
Python打卡四——字符串讲解_第4张图片
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围内也不会报错。起始偏移量小于0则会被当做是0,终止偏移量大于“长度-1”会被当做是字符长度-1。例如:

>>>"abcdefg"[3:50]
'defg'

练习:
1、将“to be or not to be”字符串倒序输出

>>>"to be or not to be"[::-1]
'eb ot ton ro eb ot'

2、将“sxtsxtsxtsxtsxt”字符串中所有的s输出

>>>"sxtsxtsxtsxtsxt"[::3]
'sssss'

14、split()分割和join合并

split()可以基于指定的分隔符将字符串分割成多个子字符串(存储在列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。例如:

>>>a = "to be or not to be"
>>>a.split()
['to','be','or','not','to','be']
>>>a.split('be')
['to ',' or not to ','']   #注意be后面有一个空字符串

join()的作用和split()的作用刚好相反,用于将一系列子字符串连接起来。例如;

>>>a = ['rgc','rgc100','rgc200']
>>>'*'.join(a)
'rgc*rgc100*rgc200'

拼接字符串要点:
使用字符串拼接+,会产生新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join函数,因为join函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。用代码测试情况如下所示:

Python打卡四——字符串讲解_第5张图片
在这里插入图片描述

15、字符串驻留机制和字符串的比较

(1)字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线、字母和数字)会启用字符串驻留机制

>>>a = "abd_123"
>>>b = "abd_123"
>>>a is b
True
>>>c = "dd##"
>>>d = "dd##"
>>>c is d
False
>>>c == d
True

(2)成员操作符:in/not in 关键字,判断某个字符(子字符串)是否在一个字符串中。例如:

>>>a = "abcdefghijkl"
>>>"b" in a
True
>>>"bcd" in a
True
>>>"ddd" in a
False
>>>"ddd" not in a
True

16、字符串常用方法汇总

(1)查找方法
示例:a=’’‘我是高淇,今年18岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他6岁了。我是一个编程教育的普及者,希望影响6000万学习编程的中国人。我儿子现在也开始学习编程,希望他18岁的时候可以超过我’’’

Python打卡四——字符串讲解_第6张图片

(2)去除首尾信息strip()函数
Python打卡四——字符串讲解_第7张图片
(3)大小写转换
Python打卡四——字符串讲解_第8张图片
(4)格式排版
Python打卡四——字符串讲解_第9张图片
其中10代表一共10个字符,“*”表示总字符少于10个则用星号填充。

(5)其他方法
Python打卡四——字符串讲解_第10张图片
17、字符串的格式化

(1)format()函数
Python打卡四——字符串讲解_第11张图片
(2)填充与对齐
填充与对齐一起使用。
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。
例如:

>>>"{:*>8}".format("245")
'*****245'
>>>"我是{0},我喜欢数字{1:*^8}".format("肉骨茶","666")
'我是肉骨茶,我喜欢的数字是**666***'

(3)数字格式化
例如:

>>>a = "我是{0},我的存款有{1:.2f}"
>>>a.format("肉骨茶","2345.2345")
'我是肉骨茶,我的存款有2345.23'

其余用法:
Python打卡四——字符串讲解_第12张图片

18、可变字符串
在Python中,字符串是可变的,但是当频繁的修改某一个字符串时,如果是使用replace()函数,就会生成多个对象,故可以使用io.StringIO对象来修改字符串的值。
例如:

>>>import io
>>>s = "hello,rgc"
>>>sio = io.StringIO(s)
>>>sio
<io.StringIO object at 0x02F462B0
>>>sio.getvalue()
'hello,rgc'
>>>sio.seek(7)      #指针移动到第7个位置
7
>>>sio.write("r")
1
>>>sio.getvalue()
'hello,rgc'

io.StringIO对象不会生成新的字符串对象,在修改的过程中是在sio一个对象中进行修改。

你可能感兴趣的:(Python,python,字符串)