Python-教程-chapter4

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

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

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

资源描述

字符串计算文本数据计算机应用从科学计算转向信息管理信息管理中大量的数据都是文本数据–如姓名,地址,简历等等–小问题:身份证号码,电话号码,学号等是数值?(做数学运算的是数值)计算机中用字符串来表示文本数据LuChaojun,SJTU2字符串类型字符串:字符序列–字符、字符集(计算机认识的符号)字符串字面值:用一对引号(单或双)标明.“helloworld”‘~!@#$%^&*’“汉字也是字符”注意:尽量不要用汉字;引号的配对,良好的风格是同时打出来LuChaojun,SJTU3字符串类型字符串中包含引号怎么办?–包含单引号:串用双引号括住–包含双引号:串用单引号括住–两者都有:更一般的方法是串中用escape字符\print“Alicesaid,\“Hello,’Bob’\””LuChaojun,SJTU4字符串类型转意,有了特殊意义的字符,需要使用其一般意义时,用转意符号“\”’’’’’’,””””””’’’firstlinesecondlinethirdline’’’字符串的输入错误输入:str=input(“Enterastring:“)Enterastring:John原因:input()是把输入当成表达式来计算的!解决方法:–输入时加上引号–使用raw_input()LuChaojun,SJTU6input与raw_input例:比较x=input()x=raw_input()“John”Johnxxx=input()x=raw_input()3*4+23*4+2xx可见raw_input()将输入当成字符串数据LuChaojun,SJTU7字符串操作程序=数据结构+算法–被处理的是什么?对它做什么?字符串操作:取字符字符串是字符序列,可通过位置索引访问每个字符.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[3+5]或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]str[5:]即str[5,9]str[:]即str[0:9]考虑:str[5:8]&str[5:9]哪个显示到串的尾部?字符串操作:连接两字符串的连接string1+string2–例如:“Hello”+“Bob”得到“HelloBob”一个字符串的重复–例如:3*“Hi”和“Hi”*3都得到“HiHiHi”串长度函数len()编程实例:表查找在一个数据表里查找目标defmain():months=“JanFebMarAprMayJunJulAugSepOctNovDec”n=input(“Entermonthnumber(1-12):”)pos=(n-1)*3#根据数据特点找规律monthAbbr=months[pos:pos+3]print“Themonthabbreviationis”,monthAbbr+”.”这是简单查找:利用位置规律来定位–例如:定长记录文件编程实例:表查找一类问题–当数据很多的时候,高效的方法回很重要,如二分法等–利用数据的规律。查找中“序”的信息很重要若是月份全称怎么办?–找大写字母(自己练习编程)字符串的机内表示与数值一样,计算机内用二进制数表示每一个字符.–计算机看到二进制的数字找到对应的字符,显示时用曲线等画出–操作字符串本质上仍然是数值运算二进制做运算。如两个字符串相加–表示字符的这个数值称为字符的编码这与密码通信的做法是一样的字符串的机内表示问题:计算机采用什么字符集?其中每个字符用什么编码?–对这个问题的不同回答就导致了许多不同的字符编码系统.(一台机器只能表示一个字符集)–例如:字符集只包含A~Z,分别用1~26表示(编码)“85121215”是什么意思?(解码)编码标准不同计算机若用不同编码体系,则彼此无法沟通.标准化–ASCII:单字节编码只用到7位:0~127–96个可打印字符,32个控制字符(回车,换行,退格等)利用8位可扩充ASCII:0~255–GB2312:两字节(6763个汉字)–GB18030:最多四字节(70244个汉字)–Unicode:最多四字节用汉字需要指定Unicode字符与编码求给定字符的编码:ord()ord(‘a’)可得97求给定编码的字符:chr()chr(97)可得‘a’可见Python2.7支持ASCII.支持中文编码吗?”你好”print“你好”(可以,但是在程序中时有未知问题)编程实例:编码与解码编码message=raw_input(“Enterthemessagetoencode:“)forchinmessage:printord(ch),解码code=raw_input(“Enterthecodeofmessage:“)message=“”fornumStrinstring.split(code):num=eval(numStr)message=message+chr(num)print“Thedecodedmessageis:”,message注意:字符串50和数值50是不同的。字符串库Python提供的string库包含了很多有用的字符串处理函数例如split():将字符串拆分成子串string.split(“Hellostringlibrary!”)返回结果:[‘Hello’,’string’,’library!’]string.split(“32,24,25,57”,”,”)返回结果:[’32’,’24’,’25’,’57’]拆分依据:默认空格,可以指定其他符号字符串库(续)一些常用函数–capitalize(s):使s首字母大写–capwords(s):使s的每个单词首字母大写–center(s,width),ljust(s,width),rjust(s,width):使s变成width宽度且居中/左对齐/右对齐–count(s,sub):sub在s中出现次数以“hello”或“helloworld”自行联系字符串库(续)一些常用函数–find(s,sub),rfind(s,sub):在s中找sub的首次/末次出现–join(seq):将串序列中的串合并成一个串,分隔符默认为空格–lower(s),upper(s):将串变成小写/大写–lstrip(s),rstrip(s):删除打头/收尾的空格–replace(s,oldsub,newsub):在s中用新子串替换旧子串以“hello”或“helloworld”自行练习从编码到密码字符编码都是工业标准,不是为了保密目的.密码:为了保密而对信息进行编码(密钥)例如:网上银行明文密文加密解密数值与字符串的互相转换eval()函数:将字符串当作数值表达式进行计算–语法:eval(string)–例如:eval(“3+4*5”),eval(“hello”),eval(“’hello’”)str()函数:将数值当作字符串–语法:str(expr)–例如:str(3+4*5)字符串的格式化输出格式化运算符%–语法template-string%(values)–语义:模板串中用%标记“空位”,输出时用实际值填入.例如print“Thepriceis$%0.2f”%(100)格式描述空位:格式指示符,描述了填入的值的输出形式.%width.precisiontype-char–三种类型字符:decimal,float,string–宽度:用多少位置显示数值.省略或指定为0:根据值的实际长度显示.宽度超出值的长度时:右对齐显示–宽度前加负号:左对齐.对浮点数用超长宽度会怎样?(“%f,%0.20f”%(3.14,3.14))–精度:指示浮点数值的小数位数.省略:按系统默认的小数位数显示.print“%f”%(math.pi)编程实例:浮点数如何精确化?浮点数的机内表示是近似值银行应用要求精确表示金额,故不宜用浮点数及浮点运算.解决办法:以“分”为单位,用整数表示金额.–设金额是x分,输出时利用x/100和x%100分别得到“元”和“角分”.print“Youhave%d.%02d”%\(x/100,x%100)02d:不足2位用0填充\:语句换行继续文件处理文件:存储在磁盘上的数据序列典型的文件结构:–基本数据项:可为任何类型–若干数据项构成记录–若干记录构成文件LuChaojun,SJTU28文件处理例如:–学生基本数据项:学号,姓名,年龄–一个学生记录:{学号,姓名,年龄}–文件:全体学生记录文件格式:.py文本文件、无格式不同格式的文件由不同的软件打开,如.docLuChaojun,SJTU29文本文件文件中是文本数据–普通字符数据,字符串,原样存储文本文件可视为存储在磁盘上的字符串.–单行字符串–多行字符串行尾(EOL):用特殊字符,如新行(newline)字符.Python用\n表示新行字符,该字符在显示时被解释成新行字符.30文本文件例:–print“firstline\nsecond\line\nthirdline”–print”””firstlinesecondlinethirdline”””-print“firstpart\tsecondpart”\t制表符,chaos.py31文件处理:打开文件打开文件:将磁盘文件与一个程序变量关联,做好读写准备filevar=open(filename,mode)–mode:“r”或“w”例如infile=open(“myfile”,“r”)outfile=open(“myfile”,“w”)–写打开时小心文件名!因为可能破坏现有文件32文件处理Discmyfile.pyJanuaryFebruaryMarchAprilMayCPUMMfv文件处理:读写文件读文件:读出文件内容–filevar.read()向对象发送操作请求,把文件的所有内容读入内存–filevar.readline()把文件中指定行的内容读入内存,然后指针指向下一行–filevar.readlines()把文件中指定行以后的内容都读入内存注意:点表示法:文件是对象!34文件处理:读写文件写文件:将新内容写入文件.filevar.write(string)–若想写多行内容,需写入\nLuChaojun,SJTU35文件处理:关闭文件关闭文件:取消文件变量与磁盘文件的关联filevar.close()–关闭文件时,系统会将内存中文件内容输出到磁盘LuChaojun,SJTU36文件处理磁盘的数据无法直接处理处理方法–Open–Readorwrite–Close联机帮助:3.9FileObjects编程实例:批处理通过文件实现成批数据的输入输出–这种情况不适合用交互方式输入infile=open(infileName,’r’)outfile=open(outfileName,’w’)forlineininfile.readlines():(#这里用read()可否?Readlines()产生一个列表[])first,last=string.split(line)uname=string.lower

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

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

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

×
保存成功