数据类型之字符串(string)(四)
字符串本质是:字符序列
不可变
1、字符串编码,Unicode
ord('A') ord('王')
2、创建字符串,引号
a = 'Hello python!' b = "I'm a teacher!" c = """ name age job """ d = '' # 空字符串
3、转义字符 “\+特殊字符”
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\b 退格
\n 换行
\t 制表符
\r 回车
4、字符串拼接
1)+号连接
字符串+字符串——拼接
数字+数字——计算
类型不同——报错
2)可以将多个字符串直接放在一起实现拼接
print('abc' + 'cde') print('abc' 'cde')
结果:abccde
abccde
5、字符串复制
print('abc'* 10)
结果:abcabcabcabcabcabcabcabcabcabc
6、不换行打印
print('doc', end='\t') # 制表符结尾 print('wang', end=' ') # 空格结尾 print('王', end='*') # *号结尾
7、从控制台读取字符串
name = input("请输入姓名:") # 返回字符串 print(name)
8、str()函数,将其他类型转为字符串
print(str(3.33)) print(str(True))
9、提取字符串——索引
a = 'abcdefghijklmnopqrstuvwxyz' # 左侧从0开始,右侧从-1开始
print(a[0])
print(a[3])
print(a[-1])
返回结果:
a
d
z
10、replace()实现字符串替换,本质是创建了新的字符串对象
b = a.replace('c', '王') print(a) print(b)
11、切片
print(a[:]) # 提取整个字符串 print(a[1:4]) print(a[3:8:2]) # 步长为2 print(a[-3:]) print(a[::-1]) # 将字符串倒序排列 print(a[12:300]) # 不报错,至末尾
12、split()分割
a = "to be or not to be" print(a.split()) # 以空格分割 print(a.split('be')) # 以be分割
13、join(),字符串拼接
a = ['wang', 'and', 'zhang'] print('*'.join(a)) print(''.join(a)) print(' '.join(a))
14、字符串驻留机制
对于符合标识符规则的字符串(仅包含下划线、字母和数字),会启用
a = 'abc_33' b = 'abc_33' print(a is b) # True c = 'abc#' d = 'abc#' print(c is d) # 交互界面为False,pycharm为True print(id(c)) print(id(d))
15、字符串比较和同一性
print(a == b) # 比较值是否相等 print(a is b) # 比较是否为同一对象
16、成员操作符 in / not in
print('a' in a) print('d' in a)
17、查找方法
a = '岸柳可藏鸦。路转溪斜。忘机鸥鹭立汀沙。咫尺钟山迷望眼,一半云遮。\ 临水整乌纱。两鬓苍华。故乡心事在天涯。几日不来春便老,开尽桃花。' print(len(a)) # 字符串长度 print(a.startswith('岸柳可藏鸦')) # 是否以指定字符串开头 print(a.endswith('开尽桃花。')) # 是否以指定字符串结尾 print(a.find('路')) # 第一次出现位置 print(a.rfind('路')) # 最后一次出现位置 print(a.count('华')) # 出现次数 print(a.isalnum()) # 受否为字母数字
18、去除首尾信息
b = ' 开尽桃花 ' print(b.strip()) # 去除首尾空格,可传参数,去除指定字符 print(b.lstrip()) # 去除左侧空格,可传参数,去除指定字符 print(b.strip()) # 去除右侧空格,可传参数,去除指定字符
19、大小写转换,均产生新的字符串
c = 'I love you,Baby!' print(c.capitalize()) # 首字母大写 print(c.title()) # 标题 print(c.upper()) # 全部大写 print(c.lower()) # 全部小写 print(c.swapcase()) # 大小写转换
20、格式排版
print(c.center(40, '*')) # 指定字符串,c居中,不足以*补齐,缺省为空格补齐 print(c.ljust(40)) # 左对齐 print(c.rjust(40)) # 右对齐
21、其他方法
c = '枯藤老树昏鸦' print(c.isalnum()) # 是否为字母数字 print(c.isalpha()) # 是否为字母(包括汉字) print(c.isdigit()) # 是否为数字 print('\t\n'.isspace()) # 是否为空白符 print(c.isupper()) # 是否为大写字母 print(c.islower()) # 是否为小写字母
22、字符串格式化
msg = "名字是:{0},年龄是:{1}" m = msg.format('doc wang', 22) print(m) msg = "名字是:{name},年龄是:{age}" m = msg.format(name='doctor', age=18) print(m)
23、填充和对齐
^、<、>分别是居中、左对齐、右对齐,后面带宽度
r = "{:*>8}".format("234") """ 说明:*号表示用填充字符(缺省为空格填充),>右对齐,8表示填充为8个字符 """ print(r)
24、数字格式化
a = "我是{},我的工资为{:1.2f}" print(a.format('doc wang', 3500.23723)) b = "{:0>2d}".format(5) c = "{:+.2f}".format(3.141592) print(b) print(c)
{:.2f} 保留2位小数
{:+.2f} 带符号,保留2位小数
{:.0f} 不带小数
{:0>2d} 数字补零(填充左边,宽度为2)
{:0<4d} 数字补零(填充右边,宽度为4)
{:x<4d} 数字补x(填充右边,宽度为4)
{:,} 以逗号分隔的数字格式
{:.2%} 百分比格式
{:.2e} 指数记法
{:10d} 右对齐(默认,宽度为10)
{:<10d} 左对齐(宽度为10)
{:^10d} 居中对齐(宽度为10)
25、可变字符串
import io s = "hello,python" sio = io.StringIO(s) print(sio) sio.seek(7) sio.write('王') print(sio.getvalue())