python数据类型-字符串
一、 字符串的表示方法(str)
作用: 记录文本信息
表示方法:‘ ’ 单引号 “ ”双引号 ‘’‘ ’‘’三单引号 “”“ ”“”三双引号
说明:
- 单引号可以嵌套双引号
- 双引号可以嵌套单引号
- 三单/双引号可以包含单/双引号,换行直接回车自动换行不需要手动添加换行符
比较运算符
> < >= <= == !=
规则:依据字符串中字符的Unicode编码依次比较字符串对应位上编码值的大小
'abc' > 'abd' # F
0 == 0.0 #T
'0' < '0.0' #T
in / not in运算符
1. 格式:
obj in str(序列)
obj not in str(序列)
2. 作用:判断某个值或对象是否存在字符串或序列中
3. 用处: 用于序列(字符串 列表 元组 字典 集合)
4. 返回值: in时 存在返回 True,反之返回 False
not in 与 in的返回结果相反
s = 'welecome to yangling'
'we' in s # T
'cm' in s # F
使用引号(单引号 双引号 三引号都是可以的)
二、字符串的拼接方法
(共三种,分别是:使用加号、索引和格式化输出)
str1 = 'python21';str2 = "second"
str3 = ''' test3'''
1.使用加号
str4 = str1+str2+str3 #python21second test3
2.join索引方法:用于将序列中的元素以指定的字符连接生成一个新的字符串。
str4 = "_".join((str1,str2,str3)) #python21_second_ test3
3.格式化输出
三、字符串的切片操作和下标取值
作用:从字符串序列中取出连续或一定间隔的子串,切片的时候只能是从前到后,左闭右开
格式:s[start : stop : step] s[start : stop]
参数:
start:起始下标,默认是0
stop:终止下标,在切片时获取不到stop下标对应的子串或元素,默认是最后一个-1
step:步长,默认为1,可以不写
s = 'abcdef'
s[1:3] #bc
s[0:5:2] #ace
s[:] #abcdef
s[::3] #ad
s[:4] #abcd
s[2:] #cdef
s[::-1] #fedcba
s[1:5:-1] #错误示例
s[5:1:-1] #fedc
>>> s='abcdefghijk'
>>> s[3:8]#'defgh'
>>> s[2::4]#'cgk'
>>> s[9:4:2]#错误''
>>> s[9:4:-2]#'jhf'
说明:
当步长为正数时,取正向切片,start < stop
当步长为负数时,取反向切片,start > stop
s[1:1] #错误示例
s1='python java c php'
print(s1[7:11]) #java
四、字符串转义
- 转义字符:字符串的字面值中用反斜杠,后跟一些字符来表示特殊字符
符号 | 描述 |
---|---|
\n | 换行 |
\t | 横向制表符 |
\ ' | 代表一个单引号 |
\r | 返回光标首行 |
\ \ | 代表一个反斜杠 |
\ " | 代表一个双引号 |
\' \" \\
-
解决转义字符转义的方法
一个是用\\表示\
一种是用反转义
raw字符串 (原始字符串)
格式:r'字符串内容'
作用:让所有的转义字符无效,定义的是什么样的字符串,打印出来的就是什么。通常用于表示Windows系统下的路径
print(r'\\\\\\') #\\\\\\
print('\\\\\\') #\\\
s = r'E:\nython\teach'
示例
s='python\npython\t123'
print(s)
'''
python
python 123
'''
s='python\\npython\\t123'
print(s)#python\npython\t123
s=r'python\npython\t123'
print(s)#python\npython\t123
五、字符串常用方法
-
s.find()和s.count()
s.find(sub) 返回字符在原字符串中的下标(从左0至右),如不存在返回-1 有多个时返回第一出现的字符对应下标
s.count(sub,start,stop) 获取一个字符出现的次数,start,stop可以不写
s = 'python1234java5678'
res1 = s.find("y")#查找元素的位置,没有找到返回的是-1
res2 = s.count("a")#查找元素的个数
#1 2 -
s.replace()方法
s.replace(sub,new,count) 用一个新的字符将原来的替换掉,count限制替换个数(次数),默认是替换所有
s = 'abcAbcAbAb'
s.replace('A','a')#将s里面的A替换为a
s.replace('A','a',2)#将s里面前两个A替换为a
#'abcabcabab' 'abcabcabAb' -
s.split()字符串分割,分割后得到一个列表,分割元素本身消失
s = 'abcAbcAbAb'
str1 = s.split('A')
print(str1)#['abc', 'bc', 'b', 'b']
print(type(str1))# <class 'list'>
s.split('abcd',1)#['abcAbcAbAb'],后面参数是分割次数 -
upper()和lower()
#s.upper()将字符串中的字母改为大写
s3 = 'abcdef'
str2 = s3.upper() #ABCDEF
#s.lower()将字符串中的字母改为小写
str3 = str2.lower() #abcdef -
len(obj) 获取序列的长度
ord() 返回一个字符的Unicode值
chr() 返回Unicode值对应的字符
函数 | 含义 |
---|---|
s.isdigit() | 判断字符串是否全为数字 |
s.isalpha() | 判断字符串是否全为字符 |
s.isspace() | 判断字符串是否全为空白字符 |
s.isalnum() | 判断字符串中至少有一个数字 |
s.upper() | 将字符串中的字母改为大写 |
s.lower() | 将字符串中的字母改为小写 |
s.strip() | 将字符串左右空白字符去掉(包括换行符) |
s.lstrip() | 将字符串左侧空白字符去掉 |
s.rstrip() | 将字符串右侧空白字符去掉 |
s.index(sub) | 从左至右的获取字符的索引值,若没有则触发一个ValueError |
s.startwith(sub) | 判断字符串是否以sub开头 |
s.endtwith(sub) | 判断字符串是否以sub结束 |
s.center(width,fill) | 返回一个字符串在给定宽度居中,fill填充空白的字符,默认空格 |
s.strip() 将字符串左右空白字符去掉(包括换行符)
六、字符串格式化输出
format('参数'):格式化输出,用{}表示占位符,有几个占位符就填写几个数据
语法:
- ‘{0}{1}’.format(字符串1,字符串2)
- ’{}{}’.format(’hello‘,'world')
- ’{1}{0}{1}‘.format(’hello‘,10)
info = "今天收到{}学费500元,开此收据"
name = input('name')
str4 = info.format(name)#今天收到小明,学费500元,开此收据
高级用法:
#通过下标来控制传入的数据显示的位置
s = "name:{2},age{0},birth{1}".format('12','12.3','king')
print(s)#name:king,age12,birth12.3
#通过变量名来控制显示的位置
s1 = "name:{a},age{a},birth{a}".format(a='12')
print(s1)#name:12,age12,birth12
#可以指定占位符的位置长度 < > ^分别表示向左显示 向右显示 居中显示
s2 = "name:{:10}8888888".format('ppp')
print(s2)#{}占用了10个字符的长度 name:ppp 8888888
格式化浮点数
数据 | 格式 | 结果 | 描述 |
---|---|---|---|
5.111 | {:.2f} | 5.00 | 保留小数点后两位 |
2.11 | {:.0f} | 2 | 不带小数 |
5 | {:x>4} | xxx5 | 数字补零(填充左边。宽度为4) |
5 | {:x<4} | 5xxx | 数字不x(填充右边,宽度为4) |
0.25 | {:.2%} | 25.00% | 百分比格式 |
>>> s=5
>>> print("{:.2f}".format(s))#5.00 保留小数点后两位
>>> s=2.11
>>> print("{:.2f}".format(s))#2.11
>>> print("{:.0f}".format(s))#2 不带小数
>>> s=5
>>> print("{:x>4}".format(s))#xxx5 填充左边,宽度为4
>>> print("{:x<4}".format(s))#5xxx 填充右边,宽度为4
>>> s=0.25
>>> print("{:2%}".format(s))#25.000000% 百分比格式
>>> print("{:.2%}".format(s))#25.00% 百分比格式
七、整数、浮点数和字符串之间的转换
格式符: %
作用:生成一定格式的字符串
格式:格式化字符 % 参数值
如:%s (字符串) %f (浮点型) %d(整型)
print('XXX正在学习%s' % 'python') #XXX正在学习python
print("应付%f元" % 变量) #应付12.300000元
- 整数和浮点数转换为字符串:str
- 整数和字符串转换为浮点数:float
- 浮点数和字符串转换为整数:int
- 其他类型转换为bool型:bool
八、字符串的运算
+ * += *=
+ += 字符串的拼接 字符串与数字类型做拼接时,必须将数字类型转换为字符串,否则触发TypeError类型错误
* *= 将一个字符串复制多少遍 *后必须为整型
>>> s='hello'
>>> s*6 #'hellohellohellohellohellohello'
>>> s+'python' #'hellopython'
九、修饰符
- 左对齐
+ 显示正负号
0 左侧补零
%nd 设置整数显示宽度,若位数大于n则n无效
%m.nf 设置浮点数显示格式
a = 8
%2d
print("a=8用%02d"输出结果" % a)
b = 2.6
%.2f
print("应付金额:%.2f" % b)
s = 'python'
%16s
%016s
%5s
x = 2.6
%5.3f
%05.3f
十、索引操作
格式:字符串[整数表达式]
s[int]
s = 'welecome to yangling'
s[0]
s = 'python'
字符 | p | y | t | h | o | n |
---|---|---|---|---|---|---|
正向索引下标 | 0 | 1 | 2 | 3 | 4 | 5 |
反向 | -6 | -5 | -4 | -3 | -2 | -1 |
说明:
1 序列都可以通过索引(index)去访问序列的对象(元素)
2 正向索引下标从0开始,第一个元素下标为0,第二个为1,以此类推最后一个为整体长度-1
反向索引,最后一个元素下标为-1,倒数第二个为-2 ...
3 当给定的整数表达式超出下标范围则触发一个IndexError错误