Python数据类型之字符串

目录

1.字符串索引与切片

(1)字符串索引

(2)字符串切片

2.Python字符串的方法

3.Python字符串拆分方法

4.Python字符串的替换

5.Python字符串的修饰

6.Python字符串的格式化

(1)format()

按索引传递参数

按关键字传递参数

填充与格式化

精度与进制

精度

进制

(2)百分号方式的格式化

7.Python字符串变形

8.Python字符串的判断

9.Python字符串编码与解码

encode():编码

decode():解码


1.字符串索引与切片


(1)字符串索引

  注意不要越界

(2)字符串切片

格式:[起始位置,结束位置,步长]     左闭右开

len()函数:查看字符串内容的长度

反向截取,从右往左

s = 'hello world'
print(s[0])  # h
print(s[::])  # hello world
print(len(s))  # 11
print(s[-3:-1:1])  # rl
print(s[-1:-4:-1])  # dlr
print(s[-1:-5:-1])  # dlro
print(s[-1::-1])  # dlrow olleh
print(s[::-1])  # dlrow olleh
print(s[-1:-3:1])  # 什么都没有

2.Python字符串的方法

count() 统计字符串出现的次数
find() 返回字符串的索引位置,找不到返回:-1
rfind()

从右往左找<-------------字符串

 从左往右数-------------->索引

index() 返回字符串的索引位置,找不到会报错
rindex()

 从右往左找<------------字符串

 从左往右数------------->索引

       找不到会报错

s = 'hello world python'
print(s.count('h'))  # 2
print(s.find('h'))  # 0
print(s.find('a'))  # -1
print(s.rfind('o'))  # 16
print(s.rfind('0'))  # -1
print(s.index('ll'))  # 2
print(s.index('w'))  # 6
print(s.rindex('ws'))  # 报错
print(s.rindex('l'))  # 9

 


3.Python字符串拆分方法

 

partition() mystr按str分为三部分,str前,str本身,str后 返回一个元组类型
splitlines()

         按行拆分

         Keepends=False   默认为False,  不显示换行符

         Keepeds=True     显示换行符

返回一个列表类型
split() 按指定内容拆分,不包含指定内容 返回一个列表类型

 

s = 'hello world python'
print(s.partition('world'))  # 返回一个元组:('hello ', 'world', ' python')
s = 'hello\nworld\npython'
print(s.splitlines())  # 返回一个列表:['hello', 'world', 'python']
print(s.splitlines(keepends=True))  # 返回一个列表:['hello\n', 'world\n', 'python']
s = 'hello world python'
print(s.split(' '))  # 返回一个列表:['hello', 'world', 'python']
print(s.split('o'))  # 返回一个列表:['hell', ' w', 'rld pyth', 'n']

4.Python字符串的替换

replace()

从左往右替换指定元素,可以指定替换的个数,默认全部替换

第二个参数可以直接指定替换的个数

translate() 写对应关系    一一对应,一一替换,替换的字符串长度必须相同
s = 'hello world python'
print(s.replace('o', '0'))  # 把所有的'o'都替换成'0'   hell0 w0rld pyth0n
print(s.replace('o', '0', 2))  # 把前两个'o'替换成'0'   hell0 w0rld python
s = 'hello world!'
intab = 'world!'
outtab = 'python'
ret = str.maketrans(intab, outtab)
print(s.translate(ret))  # hehhy python

5.Python字符串的修饰

center() 让内容居中显示,其他地方默认用空格填充
rjust() 其他地方可以用指定内容填充,由第二个参数表示指定内容
ljust() 左对齐
zfull() 右对齐,其他地方用0填充
strip() 默认去除两边的空格,也可以去除指定的内容
rstrip() 默认去除右边的空格,也可以去除指定的内容
lstrip() 默认去除左边的空格,也可以去除指定的内容
s = 'hello'
print(s.center(10))  # hello   
print(s.center(10, '*'))  # **hello***
print(s.rjust(10))  # hello
print(s.rjust(10, '!'))  # !!!!!hello
print(s.ljust(10))  # hello     
print(s.ljust(10, '@'))  # hello@@@@@
print(s.zfill(10))  # 00000hello

 


6.Python字符串的格式化

(1)format()

按位置传递参数,必须一一对应

  • 按索引传递参数

  • name = 'zs'
    age = 10
    msg = '大家好,我叫{},今年年龄{}'.format(name, age)
    print(msg)  # 大家好,我叫zs,今年年龄10
    msg = '大家好,我叫{},我叫{},我叫{},今年年龄{}'.format(name, name, name, age)
    print(msg)
    msg = '大家好,我叫{},我叫{},我叫{},今年年龄{}'.format(name, name, name, age)
    print(msg)
    msg = '大家好,我叫{0},我叫{0},我叫{0},今年年龄{1}'
    print(msg.format(name, age))  # 大家好,我叫zs,我叫zs,我叫zs,今年年龄10
    

     

  • 按关键字传递参数

name = 'zs'
age = 10
msg = '大家好,我叫{name},今年年龄{age}'.format(name='李四', age=20)
print(msg)  # 大家好,我叫李四,今年年龄20
msg = '大家好,我叫{name},今年年龄{age}'
print(msg.format(name='王麻子', age=50))  # 大家好,我叫王麻子,今年年龄50
print(msg.format(age=32, name='张三'))  # 大家好,我叫张三,今年年龄32

  • 填充与格式化

格式     :[填充内容][对齐方式][宽度]

name = 'zs'
age = 20
height = 2
msg = '大家好,我叫{:@^10},年龄{:*<10},身高{:!>10}'
print(msg.format(name, age, height))
# 大家好,我叫@@@@zs@@@@,年龄20********,身高!!!!!!!!!2
​

  • 精度与进制

  • 精度

{:.2f}     精确到小数点后第二位

long = 5 / 3
wide = 9 / 8
area = long * wide
msg = '长方形的长是{:2f},宽是{:3f},面积是{:2f}'.format(long, wide, area)
print(msg)
# 长方形的长是1.666667,宽是1.125000,面积是1.875000
  • 进制

二进制:     :b

八进制:       :o

十六进制:     :x

print('二进制{:b}'.format(3))  # 11
print('八进制{:o}'.format(10))  # 12
print('十六进制{:x}'.format(10))  # a

(2)百分号方式的格式化

接收字符串 %s
接收int %d
% %%
接收小数 %f    %.2f
name = 'zs'
age = 20
long = 5 / 3
msg = '大家好,我叫%s,年龄%d,学习pytohn进度10%%' % (name, age)
print(msg)  # 大家好,我叫zs,年龄20,学习pytohn进度10%
msg = '长方形的长是%.2f' % long
print(msg)  # 长方形的长是1.67

 


7.Python字符串变形

upper() 把字符串转换为大写
lower() 把字符串转换为小写
swapcase() 把字符串里面的大写转换成小写,小写转换大写
title() 把字符串的每一个单词的首字母转换成大写
capitalize() 整个字符串只有首字母是大写,其余都是小写
expandtabs()

 默认横向制表符   \t   占8个空格

 可以用  tabsize   来改变  \t占得位置大小

 当\t前面的字符超过tabsize,则从tabsize+1开始数:

 tabsize-前面的字符=空格的个数

s = 'hello world Python'
print(s.upper())  # HELLO WORLD PYTHON
print(s.lower())  # hello world python
print(s.swapcase())  # HELLO WORLD pYTHON
print(s.title())  # Hello World Python
print(s.capitalize())  # Hello world python
s = '\tabc'
print(s.expandtabs())  #        abc
s = 'abmsdeewidsa\tabcv'
print(s.expandtabs())  # abmsdeewidsa    abcv
print(s.expandtabs(tabsize=4))  # abmsdeewidsa    abcv

 


8.Python字符串的判断

isalnum() 判断字符串是否完全由字母和数字组成
isalpha() 判断字符串是否完全由字母组成
isdigit() 判断字符串是否完全由数字组成
isspace() 判断字符串是否完全由空格组成
isupper() 判断字符串是否完全是大写
islower() 判断字符串是否完全是小写
istitle() 判断字符串的每一个单词的第一个字母是否都是大写
startwith()

判断字符串开头的字符,也可以截取判断,指定范围

左闭右开

endwith()

判断字符串结尾的字符,也可以截取判断,指定范围

左闭右开

s = 'sadahjADS2342GF435433jhGHJ__+&^$'
print(s.isalnum())  # False
print(s.isalpha())  # False
print(s.isdigit())  # False
print(s.isspace())  # False
print(s.isupper())  # False
print(s.islower())  # False
print(s.istitle())  # False
s = 'hello world'
print(s.startswith('h'))  # True
print(s.startswith('h', 2, 5))  # False
print(s.endswith('ld'))  # True
print(s.endswith('ld', 3, 6))  # False

 


9.Python字符串编码与解码

encode():编码

decode():解码

注意:编码表和解码表必须相同

s = '我'
ret = s.encode()
print(ret)  # b'\xe6\x88\x91'
print(ret.decode())  # 我
print(s.encode(encoding='gbk'))  # b'\xce\xd2'

10.Python字符串的拼接

join():函数将元素以指定的连接符拼接成一个新的字符串

s = 'hello'
ret = '_'.join(s)
print(ret)  # h_e_l_l_o

 

你可能感兴趣的:(Python基础,Python数据类型)