《Python程序设计基础》字符串_第1页
《Python程序设计基础》字符串_第2页
《Python程序设计基础》字符串_第3页
《Python程序设计基础》字符串_第4页
《Python程序设计基础》字符串_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

动手学

Python,实践出真知!Python3程序设计字符串学习提纲

界定符1转义符2抑制转义3字符串的界定符s1='Python's2="I'mEric."s3='FrancisBaconsaid:“knowledgeispower”.'s4='''Addtwoobject(x,y)-->object(x+y)Returntwovartoonevar'''单引号三重引号双引号单引号三重引号可以作为多行注释defadd(x,y): '''Addtwoobject(x,y)-->object(x+y) Returntwovartoonevar ''' returnx+y注释转义符print('Python\tJava\tC++')PythonJavaC++HelloPythonprint('Hello\nPython')编程语言拥有转义字符主要有两个原因:①使用转义字符来表示如ASCII码里面的控制字符及回车换行等字符,这些字符都没有现成的文字代号;②某些特定的字符在编程语言中被定义为特殊用途的字符,在键盘上找不到相应的输入。file=open(‘c:\new\text.dat’,‘w‘)转义符抑制转义raws1='c:\\new\\text.dat'print(s1)#c:\new\text.dats2=r'c:\new\text.dat'#使用raw标记抑制转义print(s2)#c:\new\text.dat12推荐小结-字符串界定符使用单引号、双引号和三重引号创建字符串单引号和双引号的作用相同转义符使用反斜杠转移常用的转义符有换行\n和制表符\t抑制转义使用两个反斜杠使用raw字符串动手学

Python,实践出真知!Python3程序设计序列的索引和切片学习提纲

索引1切片2扩展切片3索引、切片和扩展切片索引切片扩展切片s[2:6]s[:6]s[:]s[2]s[-1]s[2:6:2]s[:6:3]s[::]没有冒号单个冒号两个冒号索引:获取序列中的单个元素s='Hello,Python'print(len(s))#字符串的长度为12print(s[0])#Hprint(s[1])#eprint(s[6])#Pprint(s[11])#nprint(s[-1])#n字符串长度+(-1)=11print(s[-2])#o切片:序列的某个子区域Hello,Python0126-2-1索引值指的是刀要在哪里“切下”字符串长度s='Hello,Python'print(s[2:6])#llo,print(s[0:5])#Helloprint(s[:5])#Hello省略第1个索引,默认为0print(s[6:12])#Pythonprint(s[6:])#Python省略第2个索引,默认为字符串的长度print(s[:])#Hello,Python整个字符串常用的切片表达式L=[1,2,3,4,5,6,7,8,9]a,b,c=L[:3]#a=1b=2c=3x,y,z=L[-3:]#x=7y=8z=9L=[1,2,3,4,5,6,7,8,9]L[-3:][::-1]#[9,8,7]L[-3:]获取到[7,8,9],[::-1]表示列表的反转,这样就得到[9,8,7]动手学

Python3,实践出真知!Python3程序设计序列的扩展切片扩展切片[a:b:2]默认值0默认值:序列长度步长为正值[a:b:-2]默认值:序列长度默认值:0步长为负值扩展切片示例L=[1,2,3,4,5,6,7,8,9]n=len(L)print(L[0:n:2])#[1,3,5,7,9]从索引0等距选择print(L[:n:2])#[1,3,5,7,9]省略第1个参数print(L[::2])#[1,3,5,7,9]省略前两个参数,含义同下print(L[::2])#[1,3,5,7,9]常用写法print(L[1::2])#[2,4,6,8]从索引1等距选择print(L[:-2:2])#[1,3,5,7]从索引0至倒数第2个位置的等距选择扩展切片示例:反向选取L=[1,2,3,4,5,6,7,8,9]print(L[-2:2:-1])#[8,7,6,5,4]print(L[-2:2:-2])#[8,6,4]print(L[::-1])#[9,8,7,6,5,4,3,2,1]动手学

Python,实践出真知!Python3程序设计字符串的常用方法字符串的序列操作字符串方式示例s1='86.7%'print(s1.rstrip('%'))#86.7print(float(s1.rstrip('%'))/100)#0.867s2='==Python=='print(s2.strip('='))#Python把百分数转换为浮点数strip可以去除两侧的指定字符匹配字符串的前缀和后缀forsindir(str):ifs.startswith("is"):print(s,end='')files=['01.py','02.py','demo.cpp','T03.java','hello.c']forfinfiles:iff.endswith('py'):print(f,end='')files=['01.py','02.py','demo.cpp','T03.java','hello.c']forfinfiles:iff.endswith(('c','cpp')):print(f,end='')找出前缀为“is”的所有方法查找同一类型的文件找出所有后缀名为.c或.cpp的文件字符串的切分s='JAVAPythonPHPC#SwiftPerl'print(s.split())#['JAVA','Python','PHP','C#','Swift','Perl']JAVAPythonPHPC#SwiftPerls='JAVA,Python,PHP,C#,Swift,Perl'

print(s.split(','))

#['JAVA','Python','PHP','C#','Swift','Perl']JAVA,Python,PHP,C#,Swift,Perl

['JAVA','Python','PHP','C#','Swift','Perl']字符串的合并JAVAPythonPHPC#SwiftPerlL=['JAVA','Python','PHP','C#','Swift','Perl']print(''.join(L))#JAVAPythonPHPC#SwiftPerl['JAVA','Python','PHP','C#','Swift','Perl']

初看起来,这种语法看上去会比较怪,join()被指定为字符串的一个方法。这样做的原因是你想去连接的对象可能来自各种不同的数据序列(比如列表、元组、集合或生成器等)。如果在所有这些对象上都定义一个join()方法明显是冗余的。因此你只需要指定你想要的分割符并调用其join()方法去将文本片段组合起来。方法描述str.lower()返回字符串str的副本,全部字符小写str.upper()返回字符串str的副本,全部字符大写str.islower()所有字符都是小写时,返回True,否则Falsestr.isprintable()所有字符都是可打印的,返回True,否则Falsestr.isnumeric()所有字符都是数值字符时,返回True,否则Falsestr.isspace()所有字符都是空格,返回True,否则Falsestr.endswith(suffix[,start[,end]])str[start:end]以suffix结尾返回True,否则返回Falsestr.startswith(prefix[,start[,end]])str[start:end]以suffix开始返回True,否则返回Falsestr.split(sep=None,maxsplit=-1)返回由str根据sep被分割的部分构成的列表str.count(sub[,start[,end]])返回str[start:end]中sub子串出现的次数str.replace(old,new[,count])返回字符串的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换str.center(width[,fillchar])字符串居中函数,详见函数定义str.strip([chars])返回字符串副本,在其左侧和右侧去掉chars中列出的字符str.zfill(width)返回字符串副本,长度为width,不足部分在左侧添0str.format()返回字符串的一种排版格式str.join(iterable)返回一个新字符串,iterable变量的每个元素组成,元素间用str分割字符串常用方法字符串格式化:C语言风格print("PI=%.6f"%(math.pi))print("%sis%dyeardold."%('Eric',21))转义符%

表示占位符,具体内容由后面的表达式决定字符串格式化:Python风格importmathprint("{}is{}yeardold".format('Eric',21))print("PI={:.6}".format(math.pi))person={'age':21,'name':'Eric'}print("{name}is{age}yearsold".format(**person))#Ericis21yearsold采用方法str.format格式化字符串方法str.format的参数类型也可以是字典动手学

Python,实践出真知!Python3程序设计中文分词和结巴库中文分词的特点中文分词与英文分词有很大的不同。对英文而言,单词采用空格和标点符号来区分。汉语是以字为基本的书写单位,词语之间没有明显的区分标记,需要人为切分。不同的人对词的切分看法上的差异性远比我们想象的要大得多。1994年,《数学之美》的作者吴军和IBM的研究人员合作,IBM提供了100个有代表性的中文整句,吴军组织30名清华大学二年级本科生独立地对它们进行分词。实验前,为了保证大家对词的看法基本一致,对30名学生进行了半个小时的培训。实验结果表明,这30名大学生分词的一致性只有85%~90%。分词的难点一行行行行行,一行不行行行不行。来到杨过曾经生活过的地方,小龙女说:“我也想过过过儿过过的生活”。另一个宿舍的人说你们宿舍的地得扫了。校长说衣服上除了校徽别别别的。中文分词库:结巴jieba中文分词,即ChineseWordSegmentation,即将一个汉字序列进行切分,得到一个个单独的词分词效果对信息检索、实验结果有很大影响,分词涉及各种各样的算法分词算法分为四大类:基于规则、基于统计、基于语义、基于理解对中文进行分词的工具库有很多,常见的有中国科学院,计算技术研究所的NLPIR、哈尔滨工业大学的LTP、清华大学THULAC、斯坦福分词器、HanLP分词器、jieba分词、IKAnalyzer等这里介绍jieba库Jieba库的3种模式精确模式:试图将句子最精确地切开,适合文本分析全模式:将句子中所有的可能成词的词语都扫描出来,速度快,但是不能解决歧义搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适用于搜索引擎精确模式:人工智能,是,引领,新一轮,科技,革命,和,产业,变革,的,重要,驱动力全模式:人工,人工智能,智能,是,引领,新一轮,一轮,科技,革命,和,产业,变革,的,重要,驱动,驱动力,动力搜索模式:人工,智能,人工智能,是,引领,一轮,新一轮,科技,革命,和,产业,变革,的,重要,驱动,动力,驱动力人工智能是引领新一轮科技革命和产业变革的重要驱动力。分词的要求不同的应用对分词的要求是不一样的机器翻译:分词颗粒度大,则翻译效果较好比如“联想公司”作为整体,很容易找到它对应的英语翻译“Lenovo”,如果分为“联想”和“公司”,很可能翻译失败。网页搜索:小的颗粒度比大的颗粒度要好比如“清华大学”如果作为一个词,在对网页分词后,它是一个整体,当用户查询“清华”时,就找不到“清华大学”了。分词实例import

jiebatext

=

'人工智能是引领新一轮科技革命和产业变革的重要驱动力'

w1

=

jieba.cut(text,

cut_all=False)print(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论