python字符串的方法及编码介绍

178 阅读6分钟

目录

1  python字符串的方法

1.1  字符串的查找

1.2  字符串的拆分

1.3  字符串的替换

1.4  字符串的修饰

1.5  字符串的变形

1.6  字符串的判断

2   python字符串的编码


1  python字符串的方法

1.1  字符串的查找

  字符串的查找count计数功能,返回自定字符在字符串当中的个数
find查找,返回从左第一个指定字符的索引,找不到返回-1
rfind查找,返回从右第一个指定字符的索引,找不到返回-1
index查找,返回从左第一个指定字符的索引,找不到报错
rindex查找,返回从右第一个指定字符的索引,找不到报错

操作展示:

s = 'zhucaihui daozhenian'
ret = s.count('i')
print(ret)        #3
ret = s.find('a')
print(ret)        #4
ret = s.rfind('e')
print(ret)        #15
ret = s.rfind('l')
print(ret)        #-1
ret = s.index('a')
print(ret)        #4
#ret = s.index('m')       #报错
#print(ret)
# ret = s.rindex('m')      #报错
# print(ret)
ret = s.rindex('c')
print(ret)        #3

 

1.2  字符串的拆分

字符串的分割partition把mystr以str分割成三部分,str前,str自身和str后
字符串的分割splitlines按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割
字符串的分割split按照指定的内容进行分割

源码:

s = 'wawawa qusiba ni'
ret = s.partition('qusiba')
print(ret)

s = 'cheng\ngong\nzaizhe'
ret = s.splitlines()  # 以列表的形式返回
print(ret)
ret = s.splitlines(keepends=True)
print(ret)

ret = s.split('a')
print(ret)
ret = s.split(' ')
print(ret)

运行结果:

1.3  字符串的替换

字符串的替换replace从左到右替换指定的元素,可以指定替换的个数,默认全部替换
translate按照对应关系来替换内容 from string import maketrans

源码: 

s = 'hello world!'
ret = s.replace('o','0')
print(ret)
ret = s.replace('o','0',1)
print(ret)

intab = 'world!'
outab = 'python'
tab = str.maketrans(intab,outab)
s2 = s.translate(tab)
print(s2)

   运行结果:

       

makestrans()用法
语法: str.maketrans(intab, outtab]);
Python maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,
第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
注:两个字符串的长度必须相同,为一一对应的关系。

str.maketrans(intab,outtab[,delchars])

·  intab -- 需要转换的字符组成的字符串。

·  outtab -- 转换的目标字符组成的字符串。

注:intab中出现重复字符,转换成后者

1.4  字符串的修饰

字符串的修饰center让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充
ljust让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充
rjust让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充
zfill将字符串填充到指定的长度,不足地方用0从左开始补充
format按照顺序,将后面的参数传递给前面的大括号
strip默认去除两边的空格,去除内容可以指定
rstrip默认去除右边的空格,去除内容可以指定
lstrip默认去除左边的空格,去除内容可以指定

源码:str.center( )  居中

源码:

   

运行结果:

源码:

运行结果:

源码:

运行结果:

lstrip()左驱除 右驱除rstrip()

源码:

s = ' hello python '
ret = s.strip()
print(s)
print(ret)

 

运算结果:

字符串格式化:

format() 用法:

 相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’

1.使用位置参数:

源码:

运行结果:

2.使用关键字参数:

源码:

运行结果:

3.填充与格式化:

源码:

运行结果:

精度与进制:

源码:

mag = '长方形的长是{:.2f},宽是{:.3f}'
print(mag.format(4/3,8/5))

 

运行结果:

%%:  输出百分号

源码:

运行结果:

1.5  字符串的变形

    字符串的变形upper将字符串当中所有的字母转换为大写
lower将字符串当中所有的字母转换为小写
swapcase将字符串当中所有的字母大小写互换
title将字串符当中的单词首字母大写,单词以非字母划分
capitalize只有字符串的首字母大写
expandtabs把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8

源码:

s = 'Bei Jing Huan Ying Ni'
print(s.upper())
print(s.lower())
print(s.swapcase())  # 将字符串当中所有的字母大小写互换
print(s.title())  # 将字串符当中的单词首字母大写,单词以非字母划分
print(s.capitalize())  # 只有字符串的首字母大写
s1 = '\t长舌妇'  # \t 默认占8个
print(s1)
s2 = s1.expandtabs()
print(s2.replace(' ', '@'))
print(s1.expandtabs(tabsize=1))

运行结果:

 

1.6  字符串的判断

    字符串的判断isalnum判断字符串是否完全由字母或数字组成
isalpha判断字符串是否完全由字母组成
isdigit判断字符串是否完全由数字组成
isupper判断字符串当中的字母是否完全是大写
islower判断字符串当中的字母是否完全是小写
istitle判断字符串是否满足title格式
isspace判断字符串是否完全由空格组成
startswith判断字符串的开头字符,也可以截取判断
endswith判断字符串的结尾字符,也可以截取判断
split判断字符串的分隔符切片

源码:

s = 'das32'
s1 = "321321"
print(s.isalnum())  # 断字符串是否完全由字母或数字组成
print(s.isalpha())  # 判断字符串是否完全由字母组成
print(s.isdigit())  # 判断字符串是否完全由数字组成
print(s.isupper())
print(s.islower())
print(s.istitle())
print(s.isspace())  # 判断字符串是否完全由空格组成
print(s.startswith('a'))
print(s.endswith('2', 2, 4))  # 不包含5

运行结果:

 

2   python字符串的编码

encode是编码,将字符串转换成字节码。str-->byte
decode是解码 ,将字节码转换成字符串。 byte-->str

编码方式ASCIIUnicodeUTF-8
二进制表示字母‘A’0100000100000000 0100000101000001
二进制表示中文‘中’ 01001110 0010110111100100 10111000 10101101
十六进制形式 \u4e2db\xe4\xb8\xad
编码范围只有英文所有语言所有语言
一个字符占字节数12(少数偏僻字4)英文1,中文3(少数偏僻字4-6)
特点 统一,英文就在ASCII前面补一个字节节省,英文跟ASCII一样只有一个字节
用处 内存中,服务器中,比较统一保存在硬盘时,传输时,需要节省

 

 

 

 

 

 

 

 

 

 源码:

s = '我'
ret = s.encode()
print(ret)
s2 = ret.decode()
print(s2)
s3 = s.encode(encoding='gbk')
print(s3)
s4 = s3.decode(encoding='gbk')
print(s4)

 

运行结果: