喜欢是乍见之欢,爱是久处不厌。而这世上所有的久处不厌,都是因为用心。早安!
本章节关键:字符串操作远比我们想象的复杂的多
1. 字符串
Python 中字符串是由 Uniocde 编码的字符组成的不可变序列,它具备与其它序列共有的一些操作,例如判断元素是否存在、拼接序列、切片操作、求长度、求最值、求元素的索引位置及出现次数等等。
2.字符串大小写
python链式编程思想:"abc".upper().lower().split().append()
append() ->None
split() ->[]
upper() ->str # 返回s中所有字母字符转换为大写的副本
swapcase() ->str #返回一个s中大写字母字符转换为小写,小写字母转化为大写的副本:
title() #返回s的一个副本,其中每个单词的第一个字母转换为大写,其余字母为小写
capitalize() #返回一个s的副本,第一个字符转换为大写,所有其他字符转换为小写
center() #居中宽度,填充字符
zfill() #打印宽度,居右;左边用0填充;
ljust() #左对齐;
rjust() #右对齐;
3. 字符串修改;
3.1 replace(old,new[,count]) ->str
原字符不变
不可变类型字符串可以修改吗?
不管这个数据可不可以修改,尽量的查询,读取,少修改;
f='www.magedu.com'
f.replace('w','p')
f.replace('w','p',2) #替换2次;
3.2 strip 、lstrip 、rstrip(三个内建函数) *****
函数原型
S.strip([chars]) -> str 新字符串
声明:s为字符串,rm为要删除的字符序列
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
注意:strip将在其他文本后删除括号内指定的每一个字符(不要求这些字符按顺序出现)
注意:1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
>>> a = ' 123'
>>> a.strip()
'123'
>>> a='\t\tabc'
'abc'
>>> a = 'sdff\r\n'
>>> a.strip()
'sdff'
2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。
>>> a = '123abc'
>>> a.strip('21')
'3abc' 结果是一样的
>>> a.strip('12')
'3abc'
s = " I am very very very sorry "
s.strip('Iy')
-----------------------------------------
' I am very very very sorry '
s.strip('Iy ')
--------------------------------
'am very very very sorr'
4.字符串查找find / rfind / index / rindex /count
找到返回索引; 没找到返回-1;
find(sub[.start,end]) ->int # -1 不一定是效率高的方法;但是推荐使用;
rfind(sub[, start[, end]]) ->int #-1 分左右方向查找,返回的索引不同;
index(sub[, start[, end]]) ->indexerror
rindex(sub[, start[, end]]) ->indexerror
count(sub[.start,end]) ->int # 返回次数
len(string) #取长度
string6 = '我是一名Python用户,Python给我的工作带来了很多便捷。'
print(string6.index('Python')) | 4
print(string6.find('Python')) |4
index()与find()的比较:
1.index返回没找到会报错indexerror , 异常值处理毕竟有值比较好用(-1);推荐用find方法;
2.时间复杂度:index和count方法都是O(n);随着列表数据规模的增大,效率下降;
5.字符串判断endswith startswith,
等同于find;
endswith(suffix[,satrt[,end]]) ->bool #)返回True,否则返回False:
startswith(suffix[,satrt[,end]]) ->bool
注意效率问题;不要遍历整个字符;
a = 'www.magedu.com'
a.find('www',0,3) == 0
a.find('www',0,len('yyy')) == 0
True
6.格式化输出
一文搞懂Python字符串格式化
6.1 C风格格式化输出(不推荐使用)
%s 格式化字符串
%d 格式化整数
%f 格式化小数
%c 格式化ASCII字符
%o 格式化八进制
%x 格式化十六进制
%e 用科学计数法格式化
- 用作左对齐
- 用在正数前面显示正号,用在负数前没啥用
m.n m是显示的最小长度,当m大于格式化位数时才起作用显示m位,n是代表小数的位数。
转义字符
\n 换行 \a提示音 \b退格键 \t横向制表符
自然字符串 r' ' ,即取消转义
6.2 使用内置的 format() 方法***
1、通过位置
#通过位置
print('输出:{0},{1}'.format('优惠券','http://1668s.com') )
print('输出:{},{}'.format('博客','http://hi-laoz.com'))
print('输出:{1},{0},{1}'.format('优惠券','http://1668s.com'))
字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
2、通过关键字参数
print('{name},{url}'.format(url='http://1668s.com',name='优惠券'))
image
3、通过下标
p=['博客','http://hi-laoz.com']
print('输出:{0[0]},{0[1]}'.format(p))
image
list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
4、格式限定符
它有着丰富的的“格式限定符”(语法是{}中带:号),比如:
填充与对齐 填充常跟对齐一起使用 ^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如
print('{:>8}'.format('189'))
print('{:0>8}'.format('189'))
print( '{:a>8}'.format('189'))
image
5、精度与类型f
精度常跟类型f一起使用
print( '{:.2f}'.format(3.14159))
image
其中.2表示长度为2的精度,f表示float类型。
6、其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
print('17的二进制:','{:b}'.format(17)) #二进制
print('17的十进制:','{:d}'.format(17)) #十进制
print('17的八进制:','{:o}'.format(17)) #八进制
print('十的十六进制:','{:x}'.format(17)) #十六进制
image
用,号还能用来做金额的千位分隔符。
print('{:,}'.format(1234567890))
image
网友评论