python字符串学习笔记.python字符串操作方法.doc

上传人:封****n 文档编号:96697976 上传时间:2024-03-10 格式:DOC 页数:27 大小:266.20KB
返回 下载 相关 举报
python字符串学习笔记.python字符串操作方法.doc_第1页
第1页 / 共27页
python字符串学习笔记.python字符串操作方法.doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《python字符串学习笔记.python字符串操作方法.doc》由会员分享,可在线阅读,更多相关《python字符串学习笔记.python字符串操作方法.doc(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、字符串介绍字符串可以理解为一段普通的文本内容,在python里,使用引号来表示一个字符串,不同的引号表示的效果会有区别。字符串表示方式 a = Im Tom # 一对双引号 b = Tom said:I am Tom # 一对单引号 c = Tom said:Im Tom # 转义字符 d = Tom said:Im Tom # 三个单引号 e = Tom said:Im Tom # 三个双引号小总结: 双引号或者单引号中的数据,就是字符串 如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符 使用三个单引号、双引号定义的字符串可以包裹任意文本转义字符转义字符是很多程序语言、数据格式

2、和通信协议的形式文法的一部分,使用来表示一个转义字符。常见的转义字符以及它所代表的含义如下表:转义字符含义r将当前位置移到本行开头n将当前位置移到下一行开头t用来表示一个制表符代表一个反斜线字符用来显示一个单引号用来显示一个双引号下标和切片一、 下标/索引所谓“下标”又叫“索引”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间生活中的 下标超市储物柜字符串中下标的使用如果有字符串:name = abcdef,在内存中的实际存储如下:如果想取出部分字符,那么可以通过下标的方法,(注意在计算机中,下标从 0 开始) name = abcdef print(name0) p

3、rint(name1) print(name2)运行结果:abc2. 遍历所谓遍历,可以理解为按照一定的规则(一般情况下就是数据的下标),访问每一个数据。不是所有的数据都能够被遍历,字符串是可迭代对象,能够进行遍历。可以使用while和for语句,对字符串里的元素进行遍历。while语句遍历:msg = hello worldi = 0while i int示例:mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.find(好风光) # 10 好风光第一次出现时,好所在的位置print(mystr.find(你好) # -1 你好不存在,返回 -1print(mystr.

4、find(风, 12) # 15 从下标12开始查找风,找到风所在的位置试15print(mystr.find(风光,1,10) # -1 从下标1开始到12查找风光,未找到,返回 -12. rfind类似于 find()函数,不过是从右边开始查找。mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.rfind(好) # 143.index跟find()方法一样,只不过,find方法未找到时,返回-1,而str未找到时,会报一个异常。语法格式:S.index(sub, start, end) - int4.rindex类似于 index(),不过是从右边开始。三、判断py

5、thon提供了非常丰富的方法,可以用来对一个字符串进行判断。1. startswith判断字符串是否以指定内容开始。 语法格式:S.startswith(prefix, start, end) - bool示例:mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.startswith(今) # Trueprint(mystr.startswith(今日) # False2. endswith判断字符串是否以指定内容结束。mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.endswith(好风光) #Trueprint(mystr.endswith(

6、好日子) #False3. isalpha判断字符串是否是纯字母。mystr = helloprint(mystr.isalpha() # Truemystr = hello worldprint(mystr.isalpha() # False 因为中间有空格4. isdigit判断一个字符串是否是纯数字,只要出现非09的数字,结果就是False.mystr = 1234print(mystr.isdigit() # Truemystr = 123.4print(mystr.isdigit() # Falsemystr = -1234print(mystr.isdigit() # False5

7、. isalnum判断是否由数字和字母组成。只要出现了非数字和字母,就返回False.mystr = abcdprint(mystr.isalnum() # Truemystr = 1234print(mystr.isalnum() # Truemystr = abcd1234print(mystr.isalnum() # Truemystr = abcd1234_print(mystr.isalnum() # False6. isspace如果 mystr 中只包含空格,则返回 True,否则返回 False.mystr = print(mystr.isspace() # False mys

8、tr是一个空字符串mystr = print(mystr.isspace() # True 只有空格mystr = dprint(mystr.isspace() # False 除了空格外还有其他内容四、count返回 str在start和end之间 在 mystr里面出现的次数。语法格式:S.count(sub, start, end) - int示例:mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.count(好) # 3. 好字出现三次五、替换替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。mystr = 今天天气好晴朗,处处好风光呀

9、好风光newstr = mystr.replace(好, 坏)print(mystr) # 今天天气好晴朗,处处好风光呀好风光 原字符串未改变!print(newstr) # 今天天气坏晴朗,处处坏风光呀坏风光 得到的新字符串里,好被修改成了坏newstr = mystr.replace(好,坏,2) # 指定了替换的次数print(newstr) # 今天天气坏晴朗,处处坏风光呀好风光 只有两处的好被替换成了坏六、内容分隔内容分隔主要涉及到split,splitlines,partition和rpartition四个方法。split以指定字符串为分隔符切片,如果 maxsplit有指定值,则

10、仅分隔 maxsplit+1 个子字符串。返回的结果是一个列表。mystr = 今天天气好晴朗,处处好风光呀好风光result = mystr.split() # 没有指定分隔符,默认使用空格,换行等空白字符进行分隔print(result) #今天天气好晴朗,处处好风光呀好风光 没有空白字符,所以,字符串未被分隔result = mystr.split(好) # 以 好 为分隔符print(result) # 今天天气, 晴朗,处处,风光呀,风光result = mystr.split(好,2) # 以 好 为分隔符,最多切割成3份print(result) # 今天天气, 晴朗,处处, 风

11、光呀好风光rsplit用法和split基本一致,只不过是从右往左分隔。mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.rsplit(好,1) #今天天气好晴朗,处处好风光呀, 风光splitlines按照行分隔,返回一个包含各行作为元素的列表。mystr = hello nworldprint(mystr.splitlines()partition把mystr以str分割成三部分,str前,str和str后,三部分组成一个元组mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.partition(好) # (今天天气, 好, 晴朗,处处好风光呀好

12、风光)rpartition类似于 partition()函数,不过是从右边开始.mystr = 今天天气好晴朗,处处好风光呀好风光print(mystr.rpartition(好) # (今天天气好晴朗,处处好风光呀, 好, 风光)七、修改大小写修改大小写的功能只对英文有效,主要包括,首字母大写capitalize,每个单词的首字母大写title,全小写lower,全大写upper.capitalize第一个单词的首字母大写。mystr = hello worldprint(mystr.capitalize() # Hello worldtitle每个单词的首字母大写。mystr = hell

13、o worldprint(mystr.title() # Hello Worldlower所有都变成小写。mystr = hElLo WorLDprint(mystr.lower() # hello worldupper所有都变成大写。mystr = hello worldprint(mystr.upper() #HELLO WORLD八、空格处理Python为我们提供了各种操作字符串里表格的方法。1. ljust返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。str = helloprint(str.ljust(10) # hello 在右边补了五个空格2. rjust返回指定长度

14、的字符串,并在左侧使用空白字符补全(右对齐)。str = helloprint(str.rjust(10) # hello在左边补了五个空格3. center返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)str = helloprint(str.center(10) # hello 两端加空格,让内容居中4. lstrip删除 mystr 左边的空白字符。mystr = he llo print(str.lstrip() #he llo 只去掉了左边的空格,中间和右边的空格被保留5. rstrip删除 mystr 右边的空白字符。mystr = he llo print(str.r

15、strip() # he llo右边的空格被删除6. strip删除两断的空白字符。str = he llo print(str.strip() #he llo字符串拼接把参数进行遍历,取出参数里的每一项,然后再在后面加上mystr语法格式:S.join(iterable)示例:mystr = aprint(mystr.join(hxmdq) #haxamadaq 把hxmd一个个取出,并在后面添加字符a. 最后的 q 保留,没有加 aprint(mystr.join(hi,hello,good) #hiahelloagood作用:可以把列表或者元组快速的转变成为字符串,并且以指定的字符分隔。

16、txt = _print(txt.join(hi,hello,good) #hi_hello_goodprint(txt.join(good,hi,hello) #good_hi_hello字符串运算符1. 字符串和字符串之间能够使用加法运算符,作用是将两个字符串拼接成为一个字符串。例如:hello + world的结果是helloworld2. 字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次。例如:hello*2的结果是hellohello3. 字符串和字符串之间,如果使用比较运算符进行计算,会获取字符对应的编码,然后进行比较。4. 除上述几种运算符以外,字符串默认不支持其他运

17、算符。字符集计算机只能处理数字(其实就是数字0和数字1),如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。ASCII码表使用7位二进制表示一个字符,它的区间范围时0127,一共只能表示128个字符,仅能支持英语。随着计算机科学的发展,西欧语言、希腊语、泰语、阿拉伯语、希伯来语等语言的字符也被添加到码表中,形成了一个新的码表ISO8859-1(又被称为Lat

18、in1)码表。ISO8859-1使用8位二进制表示一个字符串,完全兼容ASCII码表。Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。字符和编码相互转换使用chr和ord方法,可以实现字符和编码之间的相互转换。print(ord(a) # 使用ord方法,可以获取一个字符对应的编码print(chr(100) # 使用chr方法,可以获取一个编码对应的字符编码规则使用Unicode为每

19、种语言的每个字符都设定了唯一的二进制编码,但是它还是存在一定的问题,不够完美。例如,汉字 “你” 转换成为一个字符结果是0x4f60,转换成为二进制就是01001111 01100000,此时就有两个问题:1. 1001111 01100000到底是一个汉字 “你” ,还是两个 Latin1 字符?2. 如果Unicode进行了规定,每个字符都使用n个八位来表示,对于Latin1字符来说,又会浪费很多存储空间。为了解决这个问题,就出现了一些编码规则,按照一定的编码规则对Unicode数字进行计算,得出新的编码。在中国常用的字符编码有GBK,Big5和utf8这三种编码规则。使用字符串的enco

20、de方法,可以将字符串按照指定的编码格式转换称为二进制;使用decode方法,可以将一个二进制数据按照指定的编码格式转换成为字符串。s1 = 你.encode(utf8) # 将字符 你 按照utf8格式编码称为二进制print(type(s1) # print(s1) # bxe4xbdxa0s2 = s1.decode(utf8) # 将二进制按照utf8格式解码称为字符串print(s2)s3 = 你.encode(gbk) # 将字符 你 按照gbk格式转换称为二进制print(s3) # bxc4xe3s4 = s3.decode(gbk) # 将二进制按照gbk格式解码称为字符pr

21、int(s4)思考:文字产生乱码的原因以及解决方案。成员运算符成员运算符 (in 和 not in) 可以用来快速的判断元素是否在指定的可迭代对象里,语法格式要判断的元素 in 可迭代对象。in运算符思考:怎样判断一个字符是否在指定的字符串里?msg = hellochar = input(请输入一个字符:)# 使用字符串的 find 方法可以判断字符是否存在if msg.find(char) != -1: print(您输入的字符存在)else: print(您输入的字符不存在)# 使用 in 运算符可以更加方便的查看字符是否存在if char in msg: print(您输入的字符存在)

22、else: print(您输入的字符不存在)not in 运算符和 in 运算符的使用方式一致,只不过 not in 用来判断元素是否不在指定的字符串里。注意不是所有的数据都能使用身份运算符,身份运算符后面只能是一个可迭代对象。h in hello zhangsan in lisi,henry,merry,jack1 in 123 # 报错,数字 123 不是一个可迭代对象字符串的format方法1. 概念: str.format()方法通过字符串中的大括号来识别替换字段replacement field,从而完成字符串的格式化。 替换字段由字段名field name和转换字段conversi

23、on field以及格式说明符format specifier组成,即一般形式为 字段名!转换字段:格式说明符。 字段名分为简单字段名simple field name和复合字段名compound field name。而转换字段和格式说明符都是可选的。2. 字段名form的完整格式是字段名!转换字符:格式说明符。其中字段名师必须的,而且可以分为简单字段名和复合字段名。2.1 简单字段名简单字段名由三中写法: 省略字段名: 使用非负十进制整数0 变量名name2.1.1 省略字段名大括号内省略字段名,传递位置参数。 替换字段形式: 注意:大括号个数可以少于位置参数的个数,反之不然。# 省略字段

24、名传递位置参数print(我叫,今年岁。.format(小明, 18)我叫小明,今年18岁。# 大括号个数可以少于位置参数的个数print(我爱吃和。.format(香蕉, 苹果, 大鸭梨)我爱吃香蕉和苹果。# 大括号个数多于位置参数的个数则会报错# print(我还吃和。.format(西红柿)IndexError: tuple index out of range2.1.2 数字字段名可以通过数字形式的简单字段名传递位置参数。 数字必须是大于等于 0 的整数。 带数字的替换字段可以重复使用。 数字形式的简单字段名相当于把 format 中的所有位置参数整体当作一个元组,通过字段名中的数字进

25、行取值。即 0 等价于 tuple0,所以大括号内的数字不能越界。# 通过数字形式的简单字段名传递位置参数print(身高0,家住1。.format(1.8, 铜锣湾)身高1.8,家住铜锣湾# 数字形式的简单字段名可以重复使用。print(我爱0。n她今年1。n我也爱0。.format(阿香, 17)我爱阿香。她今年17。我也爱阿香。# 体会把所有位置参数整体当成元组来取值print(阿香爱吃1、3和0。.format( 榴莲, 臭豆腐, 皮蛋, 鲱鱼罐头, 螺狮粉)阿香爱吃臭豆腐、鲱鱼罐头和榴莲。# 尝试一下越界错误# print(1.format(错误用法)IndexError: tupl

26、e index out of range2.1.3 变量字段名使用变量名形式的简单字段名传递关键字参数。 关键字参数的位置可以随意调换。# 使用变量名形式的简单字段名传递关键字参数print(我大哥是name,今年age岁。.format(name=阿飞, age=20)我大哥是阿飞,今年20岁。# 关键字参数的顺序可以随意调换print(我大哥是name,今年age岁。.format(age=20, name=阿飞)我大哥是阿飞,今年20岁。2.1.4 简单字段名的混合使用 混合使用数字形式和变量名形式的字段名,可以同时传递位置参数和关键字参数。 关键字参数必须位于位置参数之后。 混合使用时

27、可以省略数字。 省略字段名不能和数字形式的字段名非负整数同时使用。# 混合使用数字形式和变量名形式的字段名# 可以同时传递位置参数和关键字参数print(这是一个关于0、1和girl的故事。.format( 小明, 阿飞, girl=阿香)这是一个关于小明、阿飞和阿香的故事。# 但是关键字参数必须位于位置参数之后# print(这是一个关于0、1和girl的故事。.format( # 小明, girl=阿香 , 阿飞)SyntaxError: positional argument follows keyword argument# 数字也可以省略print(这是一个关于、和girl的故事。.

28、format( 小明, 阿飞, girl=阿香)# 但是省略字段名不能和数字形式的字段名同时出现# print(这是一个关于、1和girl的故事。.format(# 小明, 阿飞, girl=阿香)ValueError: cannot switch from automatic field numbering to manual field specification2.1.5 使用元组和字典传参str.format()方法还可以使用*元组和*字典的形式传参,两者可以混合使用。 位置参数、关键字参数、*元组和*字典也可以同时使用,但是要注意,位置参数要在关键字参数前面,*元组要在*字典前面。#

29、 使用元组传参infos = 钢铁侠, 66, 小辣椒print(我是,身价亿。.format(*infos)我是钢铁侠,身家66亿。print(我是2,身价1亿。.format(*infos)我是小辣椒,身家66亿。# 使用字典传参venom = name: 毒液, weakness: 火print(我是name,我怕weakness。.format(*venom)我是毒液,我怕火。# 同时使用元组和字典传参hulk = 绿巨人, 拳头captain = name: 美国队长, weapon: 盾print(我是, 我怕weapon。.format(*hulk, *captain)print

30、(我是name, 我怕1。.format(*hulk, *captain)我是绿巨人, 我怕盾。我是美国队长, 我怕拳头。# 同时使用位置参数、元组、关键字参数、字典传参# 注意:# 位置参数要在关键字参数前面# *元组要在*字典前面tup = 鹰眼,dic = weapon: 箭text = 我是1,我怕weakness。我是0,我用weapon。text = text.format( *tup, 黑寡妇, weakness=男人, *dic)print(text)我是黑寡妇,我怕男人。我是鹰眼,我用箭。2.2 复合字段名同时使用了数字和变量名两种形式的字段名就是复合字段名。复合字段名支持两

31、种操作符:o .点号o 中括号2.2.1 使用.点号传递位置参数 替换字段形式:数字.属性名 只有一个替换字段的时候可以省略数字class Person(object): def _init_(self,name,age,gender): self.name = name self.age = age self.gender = genderp = Person(zhangsan,18,female)print(姓名是0.name,年龄是0.age,性别是0.gender.format(p)print(姓名是.name.format(p) # 只有一个替换字段时,可以省略数字2.2. 使用中括

32、号 用列表传递位置参数 用元组传递位置参数 用字典传递位置参数# 中括号用法:用列表传递位置参数infos = 阿星, 9527food = 霸王花, 爆米花print(我叫00,警号01,爱吃10。.format( infos, food)我叫阿星,警号9527,爱吃霸王花。# 中括号用法:用元组传递位置参数food = (僵尸, 脑子)print(我叫00,年龄1,爱吃01。.format( food, 66)我叫僵尸,年龄66,爱吃脑子。# 中括号用法:用字典传递位置参数dic = dict(name=阿星, pid=9527)print(我是name!.format( dic)# 多个

33、替换字段,不能省略数字print(我是0name,警号0pid。.format( dic)我是阿星!我是阿星,警号9527。3. 转换字段转换字段conversion field的取值有三种,前面要加!: s:传递参数之前先对参数调用str() r:传递参数之前先对参数调用repr() a:传递参数之前先对参数调用ascii()ascii()函数类似repr()函数,返回一个可以表示对象的字符串。 但是对于非ASCII字符,使用x,u或者U转义。# 转换字段print(I am !s!.format(Bruce Lee 李小龙)print(I am !r!.format(Bruce Lee 李小龙)print(I am !a!.format(Bruce Lee 李小龙)I am Bruce Lee 李小龙!I am Bruce Lee 李小龙!I am Bruce Lee u674eu5c0fu9f99!4. 格式说明符格式说明符使用过于复杂,且实际使用场景不多,暂不讨论。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com