Python 字符串操作string替换删除截取复制连接比较查找包含大小写转_第1页
Python 字符串操作string替换删除截取复制连接比较查找包含大小写转_第2页
Python 字符串操作string替换删除截取复制连接比较查找包含大小写转_第3页
Python 字符串操作string替换删除截取复制连接比较查找包含大小写转_第4页
Python 字符串操作string替换删除截取复制连接比较查找包含大小写转_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

Python字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转.Python提供了许多内置的字符串操作,下面是对一些最常用的操作的概述:替换字符串:使用replace()方法,它返回一个新字符串,其中所有旧的子字符串被新的子字符串替换。pythons="Hello,world!"new_s=s.replace("world","Python")print(new_s)#输出"Hello,Python!"删除字符串:replace()方法也可以用于删除字符串,只需要将新的子字符串设置为空字符串。pythons="Hello,world!"new_s=s.replace("world","")print(new_s)#输出"Hello,!"截取字符串:可以使用切片操作来截取字符串。切片操作使用两个索引,一个表示开始位置,另一个表示结束位置(但不包括该位置的字符)。pythons="Hello,world!"print(s[0:5])#输出"Hello"复制字符串:Python中的字符串是不可变的,所以复制一个字符串实际上是创建了一个新的字符串对象。可以使用切片操作复制字符串。pythons="Hello,world!"print(s[:])#输出"Hello,world!"连接字符串:使用+运算符可以将两个字符串连接在一起。pythons1="Hello"s2=",world!"print(s1+s2)#输出"Hello,world!"比较字符串:使用==、!=、<、>、<=、>=运算符比较字符串。这些运算符返回一个布尔值,表示两个字符串是否相等或如何比较。pythons1="Hello"s2="World"print(s1==s2)#输出False查找子字符串:使用find()和index()方法查找子字符串。这两个方法都返回子字符串首次出现的索引,如果找不到子字符串,则返回-1。区别在于,如果未找到子字符串,find()返回-1,而index()引发一个异常。pythons="Hello,world!"print(s.find("world"))#输出7检查字符串是否包含某个子字符串:使用in运算符。如果原字符串包含指定的子字符串,返回True,否则返回False。pythons="Hello,world!"print("world"ins)#输出True大小写转换:使用lower()、upper()、capitalize()和title()方法转换大小写。这些方法返回一个新字符串,其中所有的字符都被转换(或首字母被大写,其余小写)。pythons="Hello,world!"print(s.lower())#输出"hello,world!"分割字符串:使用split()方法将字符串分割为子字符串列表。可以通过指定分隔符来指定如何分割字符串。如果没有指定分隔符,则使用空格作为默认分隔符。pythons="Hello,world!ThisisPython."print(s.split())#输出['Hello,','world!','This','is','Python.']

python字符串操作方法详解字符串序列用于表示和存储文本,python中字符串是不可变对象。字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,一对单,双或三引号中间包含的内容称之为字符串。其中三引号可以由多行组成,编写多行文本的快捷语法,常用文档字符串,在文件的特定地点,被当做注释。便捷的多行注释。Python实际三类字符串:1.通常意义字符串(str)2.原始字符串,以大写R或小写r开始,r'',不对特殊字符进行转义3.Unicode字符串,u''basestring子类python中字符串支持索引、切片操作。根据python3.x的字符串源码文件可见,总共44个方法,查找列出如下:imageimage方法描述string.capitalize()把字符串的第一个字符大写string.center(width)返回一个原字符串居中,并使用空格填充至长度width的新字符串string.count(str,beg=0,end=len(string))返回str在string里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数string.decode(encoding='UTF-8',errors='strict')以encoding指定的编码格式解码string,如果出错默认报一个ValueError的异常,除非errors指定的是'ignore'或者'replace'string.encode(encoding='UTF-8',errors='strict')以encoding指定的编码格式编码string,如果出错默认报一个ValueError的异常,除非errors指定的是'ignore'或者'replace'string.endswith(obj,beg=0,end=len(string))检查字符串是否以obj结束,如果beg或者end指定则检查指定的范围内是否以obj结束,如果是,返回True,否则返回False.string.expandtabs(tabsize=8)把字符串string中的tab符号转为空格,tab符号默认的空格数是8。string.find(str,beg=0,end=len(string))检测str是否包含在string中,如果beg和end指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1string.index(str,beg=0,end=len(string))跟find()方法一样,只不过如果str不在string中会报一个异常.string.isalnum()如果string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回Falsestring.isalpha()如果string至少有一个字符并且所有字符都是字母则返回True,否则返回Falsestring.isdecimal()如果string只包含十进制数字则返回True否则返回False.string.isdigit()如果string只包含数字则返回True否则返回False.string.islower()如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回Falsestring.isnumeric()如果string中只包含数字字符,则返回True,否则返回Falsestring.isspace()如果string中只包含空格,则返回True,否则返回False.string.istitle()如果string是标题化的(见title())则返回True,否则返回Falsestring.isupper()如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回Falsestring.join(seq)以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度width的新字符串string.lower()转换string中所有大写字符为小写.string.lstrip()截掉string左边的空格string.maketrans(intab,outtab])maketrans()方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。max(str)返回字符串

str

中最大的字母。min(str)返回字符串

str

中最小的字母。string.partition(str)有点像find()和split()的结合体,从str出现的第一个位置起,把字符串string分成一个3元素的元组(string_pre_str,str,string_post_str),如果string中不包含str则string_pre_str==string.string.replace(str1,str2,

num=string.count(str1))把string中的str1替换成str2,如果num指定,则替换不超过num次.string.rfind(str,beg=0,end=len(string))类似于find()函数,不过是从右边开始查找.string.rindex(str,beg=0,end=len(string))类似于index(),不过是从右边开始.string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度width的新字符串string.rpartition(str)类似于partition()函数,不过是从右边开始查找.string.rstrip()删除string字符串末尾的空格.string.split(str="",num=string.count(str))以str为分隔符切片string,如果num有指定值,则仅分隔num个子字符串string.splitlines(num=string.count('\n'))按照行分隔,返回一个包含各行作为元素的列表,如果num指定则仅切片num个行.string.startswith(obj,beg=0,end=len(string))检查字符串是否是以obj开头,是则返回True,否则返回False。如果beg和end指定值,则在指定范围内检查.string.strip([obj])在string上执行lstrip()和rstrip()string.swapcase()翻转string中的大小写string.title()返回"标题化"的string,就是说所有单词都是以大写开始,其余字母均为小写(见istitle())string.translate(str,del="")根据str给出的表(包含256个字符)转换string的字符,要过滤掉的字符放到del参数中string.upper()转换string中的小写字母为大写string.zfill(width)返回长度为width的字符串,原字符串string右对齐,前面填充0string.isdecimal()isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。此表格参考了/A-FM/p/5691468.html,主要因为它的方法点进去,有详细解释,借鉴过来,主要方便大家。[图片上传中…(image-dae1b3-1611452458936-1)]总结上面的用法,对其分个类,我们可以把字符串操作分为字符串的替换、删除、截取、复制、连接、比较、查找、分割等但是,首先得判断这个对象是不是字符串,方法如下:如何判断一个对象是不是字符串python中字符串有两重,一种是str,一种是unicode。那如何判断一个对象是不是字符串呢?应该使用isinstance(s,basestring),而不是isinstance(s,str)。看下面例子

>>>a

=

'hi'

>>>isinstance(a,str)

True

>>>b

=

u'Hi'

>>>isinstance(b,str)

False

>>>isinstance(b,basestring)

True

>>>isinstance(b,unicode)

True

>>>isinstance(a,unicode)

False要正确判读一个对象是不是字符串,要有basestring,因为basestring是str和unicode的基类,包含了普通字符串和unicode类型。如何去掉字符串的双引号a

=

'"string"'

print(a,type(a))

b

=

eval(a)

print(b,type(b))

结果:

"string"

<class

'str'>

string

<class

'str'>下面讲str对象的基本用法字符串的基本用法可以分以下五类,即性质判定、查找替换、分切与连接、变形、填空与删减。(a)性质判定性质判定有以下几个方法。isalnum():是否全是字母和数字,并至少有一个字符

isalpha():是否全是字母,并至少有一个字符

isdigit():是否全是数字,并至少有一个字符

islower():字符串中字母是否全是小写

isupper():字符串中字母是否全是小写

isspace():是否全是空白字符,并至少有一个字符

istitle():判断字符串是否每个单词都有且只有第一个字母是大写

startswith(prefix[,start[,end]]):用于检查字符串是否是以指定子字符串开头,如果是则返回True,否则返回False。如果参数start和end指定值,则在指定范围内检查。endswith(suffix[,start[,end]]):用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。is*()这些都比较简单,从字母的字面上就可以理解,with()函数可以接受start和end参数,如果善加利用可以优化性能。另外,从python2.5版本起,with()函数族的第一个参数可接受tuple类型实参,当实参中某个元素匹配时,即返回True(b)查找与替换count(sub[,start[,end]]):统计字符串里某个字符sub出现的次数。可选参数为在字符串搜索的开始与结束位置。这个数值在调用replace方法时用得着。find(sub[,start[,end]]):检测字符串中是否包含子字符串sub,如果指定start(开始)和end(结束)范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回

-1index(sub[,start[,end]]):跟find()方法一样,只不过如果sub不在string中会抛出ValueError异常。rfind(sub[,start[,end]]):类似于find()函数,不过是从右边开始查找。rindex(sub[,start[,end]]):类似于index(),不过是从右边开始。replace(old,new[,count]):用来替换字符串的某些子串,用new替换old。如果指定count参数话,就最多替换count次,如果不指定,就全部替换前面五个方法都可以接受start、end参数,善加利用可以优化性能。对于查找某个字符串中是否有子串,不推荐使用index族和find族方法,推荐使用in和notin操作(c)分切与连接partition(sep):用来根据指定的分隔符将字符串进行分割,如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。如果sep没有出现在字符串中,则返回值为(sep,",")。partition()方法是在2.5版中新增的。rpartition(sep):类似于partition()函数,不过是从右边开始查找.splitness([keepends]):按照行('\r',

'\r\n',\n')分隔,返回一个包含各行作为元素的列表,如果参数

keepends为

False,不包含换行符,如果为

True,则保留换行符。split(sep[,maxsplit]]):通过指定分隔符对字符串进行切片,如果参数maxsplit有指定值,则仅分隔maxsplit个子字符串,返回分割后的字符串列表。rsplit(sep[,maxsplit]]):同split(),不过是从右边开始。看下面例子str1

=

'ab

c\n\nde

fg\rkl\r\n'

print

str1.splitlines();

str2

=

'ab

c\n\nde

fg\rkl\r\n'

print

str2.splitlines(True)输出如下:['ab

c',

'',

'de

fg',

'kl']

['ab

c\n',

'\n',

'de

fg\r',

'kl\r\n']

split()函数有个小陷阱,比如对于字符串s,s.split()和s.split("")的返回值不同。看下面代码s

=

"

hello

world"#前面有两个空格

print

s.split()

print

s.split('

')输出结果如下['hello',

'world']

['',

'',

'hello',

'world']这是为什么呢?原因在于:当忽略sep参数或者sep参数为None时与明确给sep赋予字符串值时,split()采用了两种不同的算法。对于前者,split()先除去两端的空白符,然后以任意长度的空白符串作为界定符分切字符串(即连续空白符串会被单一空白符看待);对于后者则认为两个两个连续空白符之间存在一个空字符串,因此对空字符串,它们的返回值也不同。>>>".split()

[]

>>>''.split('

')

[''](d)变形lower():转换字符串中所有大写字符为小写。upper():将字符串中的小写字母转为大写字母。capitalize():将字符串的第一个字母变成大写,其他字母变小写。对于8位字节编码需要根据本地环境。swapcase():用于对字符串的大小写字母进行转换,大写转小写,小写转大写。title():返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写。这些都是大小写切换,title()并不能除去字符串两端的空白符也不会把连续空白符替换成一个空格,如果有这样的需求,可以用string模块的capwords(s)函数,它能除去两端空白符,并且能将连续的空白符用一个空格符代替。看下面例子:#coding=utf-8

import

string

s

=

"

hello

world"

print

s.title()

print

string.capwords(s)输出结果如下:

Hello

World

Hello

World(e)删减与填充strip([chars]):用于移除字符串头尾指定的字符(默认为空格),如果有多个就会删除多个。lstrip([chars]):用于截掉字符串左边的空格或指定字符。rstrip([chars]):用于截掉字符串右边的空格或指定字符。center(width[,fillchar]):返回一个原字符串居中,并使用fillchar填充至长度width的新字符串。默认填充字符为空格ljust(width[,fillchar]):返回一个原字符串左对齐,并使用fillchar填充至指定长度的新字符串,默认为空格。如果指定的长度小于原字符串的长度则返回原字符串。rjust(width[,fillchar]):返回一个原字符串右对齐,并使用fillchar填充至长度width的新字符串。如果指定的长度小于字符串的长度则返回原字符串。zfill(width):返回指定长度的字符串,原字符串右对齐,前面填充0`expandtabs([tabsize])`:把字符串中的tab符号('\t')转为适当数量的空格,默认情况下是转换为8``个。|(f)字符串切片切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end以及可选的步长step来定义一个分片。格式:[start:end:step]•[:]提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串•[start:]从start提取到结尾•[:end]从开头提取到end-1•[start:end]从start提取到end-1•[start:end:step]从start提取到end-1,每step个字符提取一个•左侧第一个字符的位置/偏移量为0,右侧最后一个字符的位置/偏移量为-1

str

=

'0123456789′

print

str[0:3]

#截取第一位到第三位的字符

print

str[:]

#截取字符串的全部字符

print

str[6:]

#截取第七个字符到结尾

print

str[:-3]

#截取从头开始到倒数第三个字符之前

print

str[2]

#截取第三个字符

print

str[-1]

#截取倒数第一个字符

print

str[::-1]

#创造一个与原字符串顺序相反的字符串

print

str[-3:-1]

#截取倒数第三位与倒数第一位之前的字符

print

str[-3:]

#截取倒数第三位到结尾

print

str[:-5:-3]

#逆序截取,截取倒数第五位数与倒数第三位数之间<br>print

str[::2]

#按照步长为二,返回所有值(g)maketrans和translate的用法开发敏感词语过滤程序,提示用户输入内容,如果用户输入的内容中包含特殊的字符:

如:"苍老师"“东京热”,则将内容替换为***sentence_input

=

input("请输入:")

sensitive_varcabulary1

=

str.maketrans("苍老师",'***')

sensitive_varcabulary2

=

str.maketrans("东京热",'***')

new_sentence

=

sentence_input.translate(sensitive_varcabulary1).translate(sensitive_varcabulary2)

print(new_sentence)

#

请输入:dads大大的苍老师

#

dads大大的***(h)字符串格式化(format)用法:它通过{}和:

代替传统的%方法1,使用关键字参数要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可>>>

hash

=

{'name':'hoho','age':18}

>>>

'my

name

is

{name},age

is

{age}'.format(name='hoho',age=19)

'my

name

is

hoho,age

is

19'

>>>

'my

name

is

{name},age

is

{age}'.format(**hash)

'my

name

is

hoho,age

is

18'2,填充与格式化:[填充字符][对齐方式<^>][宽度]'{:<20}'.format(10)

#左对齐

'10

'

'{:>20}'.format(10)

#右对齐

'

10'

'{:^20}'.format(10)

#居中对齐

'

10

'3,使用位置参数要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表>>>

li

=

['hoho',18]

>>>

'my

name

is

{}

,age

{}'.format('hoho',18)

'my

name

is

hoho

,age

18'

>>>

'my

name

is

{1}

,age

{0}'.format(10,'hoho')

'my

name

is

hoho

,age

10'

>>>

'my

name

is

{1}

,age

{0}

{1}'.format(10,'hoho')

'my

name

is

hoho

,age

10

hoho'

>>>

'my

name

is

{}

,age

{}'.format(*li)

'my

name

is

hoho

,age

18'4,精度与进制>>>

'{0:.2f}'.format(1/3)

'0.33'

>>>

'{0:b}'.format(10)

#二进制

'

温馨提示

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

评论

0/150

提交评论