python基础【2】——python数据类型之字符串

python数据类型-字符串

一、 字符串的表示方法(str)

作用: 记录文本信息

表示方法:‘ ’ 单引号 “ ”双引号 ‘’‘ ’‘’三单引号 “”“ ”“”三双引号

说明:

  1. 单引号可以嵌套双引号
  2. 双引号可以嵌套单引号
  3. 三单/双引号可以包含单/双引号,换行直接回车自动换行不需要手动添加换行符

比较运算符

>   <  >=   <=  ==  !=

规则:依据字符串中字符的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

四、字符串转义

  1. 转义字符:字符串的字面值中用反斜杠,后跟一些字符来表示特殊字符
符号 描述
\n 换行
\t 横向制表符
\ ' 代表一个单引号
\r 返回光标首行
\ \ 代表一个反斜杠
\ " 代表一个双引号
\'   \"   \\
  1. 解决转义字符转义的方法

    一个是用\\表示\

    一种是用反转义

  2. 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

五、字符串常用方法

  1. 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
  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'
  3. s.split()字符串分割,分割后得到一个列表,分割元素本身消失

    s = 'abcAbcAbAb'
    str1 = s.split('A')
    print(str1)#['abc', 'bc', 'b', 'b']
    print(type(str1))# <class 'list'>
    s.split('abcd',1)#['abcAbcAbAb'],后面参数是分割次数
  4. upper()和lower()

    #s.upper()将字符串中的字母改为大写
    s3 = 'abcdef'
    str2 = s3.upper() #ABCDEF
    #s.lower()将字符串中的字母改为小写
    str3 = str2.lower() #abcdef
  5. 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元
  1. 整数和浮点数转换为字符串:str
  2. 整数和字符串转换为浮点数:float
  3. 浮点数和字符串转换为整数:int
  4. 其他类型转换为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错误

上一篇:case ...esac判断 function方法 循环loop,while do done,until do done


下一篇:Python数据类型(字符串)