python课件Chapter04-ch

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

字符串计算文本数据•计算机应用–科学计算–信息管理•信息管理中大量的数据都是文本数据.–如:姓名,地址,简历等等–小测验:身份证号码,电话号码等是数值?•计算机中用字符串来表示文本数据.2字符串类型•字符串:字符序列•字符串表现形式:用一对引号(单/双/三)括住.•用单引号和用双引号,这两种方式是等价的•三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如\n和\t都会被保留。'helloworld'~!@#$%^&*汉字也是字符'''lineone,linetwo'''lineone,linetwo34字符串类型示例str1=Hellostr2='spam'printstr1,str2Hellospamtype(str1)type'str'type(str2)type'str'字符的转义•字符串本身含有引号怎么办?–含有单引号:串用双引号括住I'mastudent.–含有双引号:串用单引号括住'HesaidIamastudenttotheteacher.'–两者都有:Hesaid,I'mastudent.这个串该用什么引号呢?•更一般的做法:用escape字符\来转变字符含义Hesaid,\I'mastudent.\–以后会学到其他一些字符的转义情形5字符串的输入•错误输入:str=input(Enterastring:)Enterastring:John•原因:input()是把输入当成表达式来计算的!•解决方法:–输入时加上引号–使用raw_input()6input与raw_input的用法例:比较1x=input()3x3x=raw_input()3x'3'7例:比较3x=input()3*4+2x14x=raw_input()3*4+2x'3*4+2'例:比较2x=input()‘john'x=raw_input()john字符串操作:取字符•字符串是字符序列,可通过位置索引访问每个字符.string[index-expr]–对长度为n的字符串,索引可以•是大于0的数:自左向右为0--n1,或者•是负数:自右向左为1,2,3,…,n–例如:若str=HelloBob,则str[0]或str[9]是'H'str[5]或str[4]是''str[8]或str[1]是'b'str[9]或str[10]越界出错字符串操作:取子串•切段:取一个索引范围内的字符.string[start:end]–所取子串:位置索引从start~end1–start或/和end可省略,缺省值为串的首尾–例如:若str=HelloBob,则str[0:3]是'Hel'str[5:9]是'Bob'str[:5]即str[0:5]是'Hello'str[5:]即str[5,9]是'Bob'str[:]即str[0:9]是'HelloBob'字符串操作:连接•两字符串的连接string1+string2–例如:Hello+Bob得到HelloBob•一个字符串的重复–例如:3*Hi和Hi*3都得到HiHiHi“•串长度函数len()str=Hello+Boblen(str)811字符串数据类型例子•字符串连接的例子spam+eggs'spameggs'Spam+And+Eggs'SpamAndEggs'3*spam'spamspamspam'spam*5'spamspamspamspamspam'(3*spam)+(eggs*5)'spamspamspameggseggseggseggseggs‘•字符串的长度len(spam)4forchinSpam!:printch,““,Spam!12字符串数据类型操作符含义+Concatenation*Repetitionstring[]Indexingstring[:]Slicinglen(string)LengthforvarinstringIterationthroughcharacters13简单的字符串处理例题•程序实现firstname和lastname的简单拼接#getuser’sfirstandlastnamesfirst=input(Pleaseenteryourfirstname(alllowercase):)last=input(Pleaseenteryourlastname(alllowercase):)#concatenatefirstinitialwith7charsoflastnameuname=first[0]+last[:7]14简单的字符串处理例题Pleaseenteryourfirstname(alllowercase):johnPleaseenteryourlastname(alllowercase):doeuname=jdoePleaseenteryourfirstname(alllowercase):donnaPleaseenteryourlastname(alllowercase):rostenkowskiuname=drostenk编程实例:表查找•在一个数据表里查找目标defmain():months=JanFebMarAprMayJunJulAugSepOctNovDecn=input(Entermonthnumber(1-12):)pos=(n-1)*3monthAbbr=months[pos:pos+3]printThemonthabbreviationis,monthAbbr+.–这是简单查找:利用位置规律来定位.•例如:定长记录文件.–若是月份全称怎么办?16编程实例:表查找MonthNumberPositionJan10Feb23Mar36Apr49pos=(num-1)*3PythonProgramming,2/e17编程实例:表查找——程序代码#month.py#Aprogramtoprinttheabbreviationofamonth,givenitsnumberdefmain():#monthsisusedasalookuptablemonths=JanFebMarAprMayJunJulAugSepOctNovDecn=input(Enteramonthnumber(1-12):)#computestartingpositionofmonthninmonthspos=(n-1)*3#GrabtheappropriateslicefrommonthsmonthAbbrev=months[pos:pos+3]#printtheresultprint(Themonthabbreviationis,monthAbbrev+.)main()main()Enteramonthnumber(1-12):1ThemonthabbreviationisJan.main()Enteramonthnumber(1-12):12ThemonthabbreviationisDec.18字符串、列表和序列•字符串实质是一种特殊序列,它的相应操作也适合于序列:[1,2]+[3,4][1,2,3,4][1,2]*3[1,2,1,2,1,2]grades=['A','B','C','D','F']grades[0]'A'grades[2:4]['C','D']len(grades)519字符串、列表和序列•字符串只是字符序列,而列表可能是任意值的序列myList=[1,Spam,4,U]•简化前面例题程序,利用月份列表:months=[Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec]•月份缩写在月份列表中的位置:monthAbbrev=months[n-1]•获取月份子串:monthAbbrev=months[pos:pos+3]20编程实例:列表查找(改进程序1)#month2.py#Aprogramtoprintthemonthname,givenit'snumber.#Thisversionusesalistasalookuptable.defmain():#monthsisalistusedasalookuptablemonths=[Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec]n=input(Enteramonthnumber(1-12):)print(Themonthabbreviationis,months[n-1]+.)main()21编程实例:列表查找(改进程序2)#month2.py#Aprogramtoprintthemonthname,givenit'snumber.#Thisversionusesalistasalookuptable.defmain():#monthsisalistusedasalookuptablemonths=[January,February,March,April,May,June,July,August,September,October,November,December]n=(input(Enteramonthnumber(1-12):)print(Themonthabbreviationis,months[n-1]+.)main()•本程序中的月份列表改为完整的月份字符串22字符串、列表和序列•列表项是可变的,而字符串中字符是不可变的myList=[34,26,15,10]myList[2]15myList[2]=0myList[34,26,0,10]myString=HelloWorldmyString[2]'l'myString[2]=pTraceback(mostrecentcalllast):Filepyshell#16,line1,in-toplevel-myString[2]=pTypeError:objectdoesn'tsupportitemassignment字符的机内表示•与数值一样,计算机内用二进制数表示每一个字符.–因此操作字符串本质上仍然是数值运算.–表示字符的这个数值称为字符的编码.•问题:计算机采用什么字符集?其中每个字符用什么编码?–对这个问题的不同回答就导致了许多不同的字符编码系统.编码标准•不同计算机若用不同编码,则彼此无法沟通.•标准化–ASCII:单字节编码,但只用到7位(0~127)•96个可打印字符,32个控制字符–ISO/IEC8859-1(Latin-1):单字节用满8位(0~255)–GB2312:两字节(7445字符/6763汉字)–GBK:两字节(21886字符/21003汉字),中文缺省编码–GB18030:最多四字节(76556字符/70244汉字)–ISO/IEC10646或Unicode:最多四字节.字符与编码•求给定字符的编码:ord()ord('a')可得97•求给定编码的字符:chr()chr(97)可得'a'•可见Python2.7默认编码为ASCII.•Q:非ASCII字符怎么办?A:用Unicode字符串printu'A\xc4B'AÄB•Python支持Unicode27编程实例:编码与解码#text2numbers.py#Aprogramtoconvertatextualmessageintoasequenceof#numbers,utlilizingtheunderlyingUnicodeencoding.defmain():print(Thisprogramconvertsatextualmessageintoas

1 / 72
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功