Python基础总结-03(字符串应用)

主要内容为字符串,包括字符串的切片、格式字符串、字符串内置函数的使用等内容。

一、字符串

容器是一种可以存储对象的对象,常见的容器有序列、映射和集合
字符串就是一种序列,且是不可变的有序序列

转义字符

1、特定意义的字符(例如:\n,\t,\f,\b ......)
2、在字符串的最前面可以添加r或者R来阻止字符串中的转义字符转义

str1="how are you \n fine"
print(str1)
str2=r"how are you \n fine"
print(str2)

获取字符

语法:字符串[下标] --根据下标获取字符串中的字符

str3="good good study\n day day up!"#转义字符是一个字符
str4="  good good study\n day day up!"#制表符是一个字符
print(str3[-11],str3[17])
print(str4[-11],str4[18])

字符串切片

语法:
字符串[起始下标:结束下标]--获取字符串中从起始下标开始,到结束下标前所有字符
字符串[起始下标:结束下标:步长]--从起始下标开始,每步长获取一个,获取到结束下标前为止
字符串[:结束下标]--从开头开始取(可是从第一个,也可是从最后一个)
字符串[:]--全部取完
注意:切片的时候下标可以越界

str5="同一个世界,同一个梦想"
print(str5[2:6],str5[6:-1])
str6="尤文图斯、拜仁慕里黑、皇家马德里、利物浦、巴黎圣日耳曼"
print(str6[1:10:2],str6[10:1:-2])
str7="落霞与孤鹜齐飞,秋水共长天一色"
print(str7[:4],str7[:6:-2])
print(str7[-4:],str7[-4::-2])
print(str7[:],str7[::-1]) 

字符串运算

Python中的字符串支持+、*和比较运算符
(1)加运算
加号两边不能一个是字符串,另一个是数字

str1="落霞与孤鹜齐飞"
str2="秋水共长天一色"
print(str1+','+str2) #落霞与孤鹜齐飞,秋水共长天一色

(2)乘运算

str3="abc"
str4="123"
print(str3*3) #abcabcabc
print(str3*3+str4) #先算乘,再算加  abcabcabc123

(3)比较运算

print('abc'=='abc','abc'!='acd')#判断相等
print("a"==chr(97),"a"=="\u0061")#判断相等
print('abcd'>'op',ord('a')>ord('o')) #比较大小:按序列比较字符的Unicode码值
print('abc' in 'abcded','abc'in 'beabce','abc' not in 'abeced')#判断字符串的包含关系
#判断一个字符是否是数字字符:利用Unicode表和ASCII表
char='5'
print('0'<=char<='9')  #判断char是否是数字
print('a'<=char<='z' or 'A'<=char<='Z')  #判断char是否是字母

(4)字符串包含关系:in 、not in

name='albert einstein is a very great great scientist'
substring='albert'
print(substring not in name,substring  in name) #False True

格式字符串

在字符串的内部通过格式占位符表示字符串变化的部分,然后在后面用值来填充变化的部分

1、百分号方式

格式:%[(name)][flags][width].[precision]typecode

  • (name) 可选,用于选择指定的key
  • flags 可选,可供选择的值有:右对齐(+):正数的加正号,负数的加负;左对齐(-):正数前没有负号,负数前加负号
  • width 可选,占有宽度
  • .precision 可选,小数点后保留的位数
  • typecode 必选
    s,获取传入的对象_str_方法的返回值,并将其格式化到指定位置
    r,获取传入对象的_repr_方法的返回值,并将其格式化到指定位置
    c,整数:将数字转换成其unicode对应的值,10进制范围为0 <= i <=1114111
    o,将整数转换成八进制表示,并将其格式化到指定位置
    x,将整数转换成16进制,并将其格式化到指定位置
    d,将整数,浮点数转化为十进制表示,并将其格式化到指定位置
    字符串格式化符号.png
name='小明'
age=22
salary=12.688
height=170
weight=72
addr="四川省成都市科华北路62号"
print("%s 的年龄是%d岁,身高是%dkg,体重是%dcm,年收入是%f万元,家庭住址是%s" % (name,age,height,weight,salary,addr))
print("%s 的年收入是%-10.2f元"%(name,salary)) 
字符串格式化辅助指令.png

2、format方式

name='xiaoming'
age=22
salary=12.688
#三种方式
str1='name is {name},age is {age},salary is {salary}'.format(name=name,age=age,salary=salary)
str2='name is {},age is {}, salary is {}'.format(name,age,salary)
str3='name is {0},age is{1}, salary is {2},the most important thing is salary is {2}'.format(name,age,salary)
print(str1,"\n",str2,"\n",str3, sep= '')
str4='name is {name:s},age is {age:d},salary is {salary:$>6.2f}'.format(name=name,age=age,salary=salary)
#$>6.2f:用$填充,右对齐,宽度为6,精度为2
#左对齐、右对齐和居中可分别使用<、 >和^
#$表示用$符号填充
print(str4, sep= '')

内置函数

(1)字母处理类:有返回值
.upper() # 全部大写
.lower() # 全部小写
.swapcase() # 大小写互换
.capitalize() # 首字母大写,其余小写
.title() # 首字母大写

name='albert einstein'
print(name.upper(),name.lower(),name.capitalize(),name.title(),name.swapcase(), sep=',')

(2)调整格式类
.ljust(width,fill) # 获取固定长度,左对齐,右边不够用fill值补齐
.rjust(width,fill) # 获取固定长度,右对齐,左边不够用fill值补齐
.center(width,fill) # 获取固定长度,中间对齐,两边不够用fill值补齐
.zfill(width) # 获取固定长度,右对齐,左边不足用0补齐

name='albert einstein'
print(name.ljust(20,'*'),name.rjust(20,'*'),name.center(20,'*'),name.zfill(20), sep=',')#zfill()函数只能有一个参数
#albert einstein*****,*****albert einstein,**albert einstein***,00000albert einstein

(3)字符查找类
.find(str, beg=0 end=len(string)) # 搜索指定字符串,没有返回-1
.rfind() # 从右边开始查找
.index() # 同上,但是找不到会报错
.rindex() # 从右边开始,同上,但是找不到会报错
.count() # 统计指定的字符串出现的次数
startswith()# 以某一个字符串开始
endswith()# 以某一个字符串结束

name='albert einstein is a very great great scientist'
print(len(name)) #47
print(name.find('einstein'),name.find('is'))#7 16
print(name.rfind('einstein'),name.rfind('is'))#7 44
print(name.index('einstein'),name.index('is'))
print(name.rindex('einstein'),name.rindex('is'))
print(name.count('e'),name.count('great'))
print(name.startswith('albert'),name.endswith('ist'))

(4)替换、连接、分割
.join(seq) #将字符串插入到目标字符串之间
.split('指定字符') # 按指定字符分割字符串为数组
.replace('old','new',次数) # 替换指定次数的old为new

sep="aaa"
seq="bbb"
print(sep.join(seq)) #baaabaaab
sep="abcabcabcabc"
print(sep.split("c"))#['ab', 'ab', 'ab', 'ab', '']
print(sep.replace('ab','ad',2)) #adcadcabcabc

(5)去空格
.strip() # 去两边空格
.lstrip() # 去左边空格
.rstrip() # 去右边空格
str.strip([chars]) 用于移除字符串头尾指定的字符(默认为空格)或字符序列

name='\t Albert Einstein\t\n'
print(name)
a=name.strip()
print(a) #Albert Einstein
b=name.rstrip()
b=name.lstrip()
print(b)  #Albert Einstein

(6)判断
.isalnum() # 是否全为字母或数字
.isalpha() # 是否全字母
.isdigit() # 是否全数字
.islower() # 是否全小写
.isupper() # 是否全大写
.istitle() # 判断首字母是否为大写
.isspace() # 判断字符是否为空格
=========================================================
isdigit()、isdecimal()、isnumeric()的区别
都不能判断小数-->'12.55' --False
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无

isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)

isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False:
Error: byte数字(单字节)
=========================================================

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,816评论 2 16
  • 1、上个周末上某个心灵成长课程,课程一开始,老师让每个人都写一句话,然后署名。共12个人,8个人的话是光里,爱里,...
    李信兰阅读 296评论 2 0
  • 1.雅思真题一套,护眼 2.口语打卡,护眼 3.阅读打卡,护眼 4.名著阅读打卡,护眼 5.单词打卡,护眼 6.体...
    一个人的朝圣远行阅读 145评论 0 1
  • 育娴的感恩清单百分之百显化 1、我感恩我的真我,对我无时无刻的陪伴与守护 2、我感恩我的高级智慧,我爱你~我亲爱的...
    感恩宇宙阅读 209评论 0 0
  • 猎头这个职业,我至今都觉得它神秘,一直都想去探个究竟。因换过几份工作的原因,和他们有一些接触,这种接触也仅限于电话...
    残剑阅读 696评论 2 6