Fork me on GitHub

学习python -- 第011天 字符串

字符串的驻留机制

 

 

简单来说就是 当字符串的值相同时,不开辟新的空间,而是直接指向该字符串

 

 

 

字符串驻留机制的优缺点
·当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。
·在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率要比“+”效率高

 

字符串的常用操作

查询操作

 

 

 1 #
 2 # @author:浊浪
 3 # @version:0.1
 4 # @time: 2021/3/21 16:51
 5 # 
 6 
 7 # 字符串的查询操作
 8 s = 'hello,hello'
 9 print(s.index('lo'))  # 3
10 print(s.find('lo'))  # 3
11 print(s.rindex('lo'))  # 9
12 print(s.rfind('lo'))  # 9
13 
14 # 查找不存在的字符
15 print(s.find('k'))  # -1
16 # print(s.index('k')) ValueError: substring not found
17 print(s.rfind('k'))  # -1
18 # print(s.rindex('k')) ValueError: substring not found

 

 

字符串的大小写转换操作的方法

 

 

 1 #
 2 # @author:浊浪
 3 # @version:0.1
 4 # @time: 2021/3/29 9:11
 5 # 
 6 s = 'hello world!'
 7 a = s.upper()  # 转成大写之后会产生一个新的字符串对象
 8 print(a, id(a))
 9 print(s, id(s))
10 print(s.lower(), id(s.lower()))
11 
12 print(s == s.lower())  # True
13 print(s is s.lower())  # False
14 
15 s2 = 'hello, Python'
16 print(s2.swapcase())
17 print(s2.title())
18 print(s2.capitalize())

 

 

字符串内容对齐操作的方法

 

 

 

 1 #
 2 # @author:浊浪
 3 # @version:0.1
 4 # @time: 2021/3/29 9:19
 5 # 
 6 
 7 s = 'hell, world'
 8 # 居中对齐
 9 print(s.center(20, '*'))  # ****hell, world*****
10 
11 # 左对齐
12 print(s.ljust(20, '*'))  # hell, world*********
13 
14 # 右对齐
15 print(s.rjust(20, '*'))  # *********hell, world
16 
17 # 右对齐 使用0填充
18 print(s.zfill(20))  # 000000000hell, world
19 print('-8967'.zfill(8))  # -0008967 这个是添加 在符号的后面
20 
21 # 长度小于实际长度则返回原字符串
22 print(s.center(10, "*"))  # hell, world

 

 

字符串劈分操作的方法

 

 

 

 

 1 #
 2 # @author:浊浪
 3 # @version:0.1
 4 # @time: 2021/3/29 9:31
 5 # 
 6 
 7 s = 'hello world Python'
 8 print(s.split())  # ['hello', 'world', 'Python']
 9 
10 s1 = 'hello*world*Python'
11 print(s1.split())  # ['hello*world*Python']
12 print(s1.split(sep='*'))  # ['hello', 'world', 'Python']
13 
14 # 指定最大分割次数
15 print(s1.split(sep='*', maxsplit= 1))  # ['hello', 'world*Python']
16 
17 # rsplit 从右边开始分割
18 print(s1.rsplit(sep='*', maxsplit= 1))  # ['hello*world', 'Python']

 

 

判断字符串的操作方法

 

字符串的切片操作方法

 

 

原理和列表的切片相同 

 

 

 

 

字符串的其他操作方法

 

 1 #
 2 # @author:浊浪
 3 # @version:0.1
 4 # @time: 2021/3/29 10:02
 5 # 
 6 s = 'hello, world'
 7 print(s.replace('world', 'python'))  # hello, python
 8 
 9 s1 = 'hello, world world world world'
10 print(s1.replace('world', 'python', 2))  # hello, python python world world
11 
12 lst = ['hello', 'java', 'python']
13 print('|'.join(lst))  # hello|java|python
14 print(''.join(lst))  # hello|java|python
15 
16 t = ('hello', 'java', 'python')  # 同上
17 
18 print('#'.join('python'))  # p#y#t#h#o#n

 

 

格式化字符串

 

 

 

 1 #
 2 # @author:浊浪
 3 # @version:0.1
 4 # @time: 2021/3/29 10:25
 5 # 格式化字符串
 6 
 7 # (1) % 占位符
 8 name = '张三'
 9 age = 20
10 print('我叫%s,今年%d岁' % (name,age))  # 我叫张三,今年20岁
11 
12 # (2) {}
13 print('我叫{0},今年{1}岁'.format(name,age))  # 我叫张三,今年20岁
14 
15 # (3) f-string
16 print(f'我叫{name},今年{age}岁')  # 我叫张三,今年20岁
17 
18 # 宽度
19 print('%7d' % 89)  #      89
20 # 精度
21 print('%.3f' % 3.14159)  #3.142
22 # 同时表示宽度和精度
23 print('%10.3f' % 3.1415926)  #     3.142
24 
25 # 另一种方法
26 # 0表示第一个占位符 如有多个的时候就需要写,一个时可以省略如下面0可省略
27 print('{0:.3}'.format(3.1415926))  # .3表示是三个数  3.14
28 print('{0:.3f}'.format(3.1415926))  # .3f表示是小数点后三个数  3.142
29 print('{0:10.3f}'.format(3.1415926))  # 同时设置宽度和精度      3.142

 

 

字符串的编码转换

 

 

 

 

 

 

 编码和解码要用同一种编码格式

 

posted @ 2021-03-29 10:43  走位,走位  阅读(58)  评论(0编辑  收藏  举报